アプリ版:「スタンプのみでお礼する」機能のリリースについて

下記のxTestから表示リストコンテナに追加された「bm」をdisposeするスクリプトを書こうと思って躓いています。

「bm」はローカル変数なので他の関数からアクセスできないと思いますので、getChildAt(0)のようにメインタイムラインから辿って参照できないかと考えています。
この方法をどなたか教えていただけないでしょうか。
また別の参照方法があればそちらでもOkです。
どうぞよろしくお願いいたします。

メインタイムライン → bm → bmd


var bmdX:uint = 500;
var bmdY:uint = 320;
var bmX:uint = 0;
var bmY:uint = 0;

var loadImg = new Loader();
loadImg.load(new URLRequest("0.jpg"));
loadImg.contentLoaderInfo.addEventListener(Event.COMPLETE,xLoader);

function xLoader(evt:Event):void {
var bmd:BitmapData = new BitmapData(bmdX,bmdY);
bmd.draw(loadImg);
var bm:Bitmap = new Bitmap(bmd);
this.addChild(bm);
bm.x = bmX;
bm.y = bmY;
}

_btn.addEventListener(MouseEvent.CLICK,xTest);

function xTest(evt:MouseEvent):void {
//▼「bm」にここからアクセスしてdispose()したい!
}

A 回答 (3件)

resecさんが回答してくれたように、


要はas BitmapとすることでこれはBitmapですと教えているようなものです。
このasの部分を省くとgetChildAt(0)の部分がなんなのかわからずにエラー
になると思われます。

なので~を静的オブジェクト~で参照しようとしていますとか
エラーがでるのですがこれはasを使いキャストしてあげると治る事が多いです。
    • good
    • 0

as演算子について


指定したオブジェクトが特定の型であるかどうかを評価する演算子です。
asの前に、「変換したいインスタンス」、後に「変換したい型」で記述します。

最初のオペランドで指定された式が、2 番目のオペランドで指定されたデータ型のメンバーであるかどうかを評価します。
最初のオペランドがそのデータ型のメンバーである場合、結果は最初のオペランドになります。
それ以外の場合、結果の値は null です。

var Bm2:Bitmap = this.getChildAt(0) as Bitmap
ではthis.getChildAt(0)がbitmapならばthis.getChildAt(0)をBm2に代入します。bitmapでなければnullになります。

なお、キャストではなくtrueかfalseの結果がほしい場合は、is演算子を使います。
    • good
    • 0
この回答へのお礼

ありがとうございます。
キャストも含め意味が理解できました。

お礼日時:2009/06/04 00:45

この場合ですと、



thisでaddChildしているので

function xTest(evt:MouseEvent):void {
var Bm2:Bitmap = this.getChildAt(0) as Bitmap;
}

これでいくと思われます。
どうでしょうか。

この回答への補足

chika_008さん

ご返信有難うございます。
一つ教えていただけますか?

var Bm2:Bitmap = this.getChildAt(0) as Bitmap;

上記のasはどういう役目をもっているのでしょうか?
使ったことのない演算子で、解説書を読んでも良く分かりません。
教えていただけますか?

補足日時:2009/06/03 16:25
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!