- 締切済み
表示オブジェクトの参照
下記の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()したい! }
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- chika_008
- ベストアンサー率80% (20/25)
resecさんが回答してくれたように、 要はas BitmapとすることでこれはBitmapですと教えているようなものです。 このasの部分を省くとgetChildAt(0)の部分がなんなのかわからずにエラー になると思われます。 なので~を静的オブジェクト~で参照しようとしていますとか エラーがでるのですがこれはasを使いキャストしてあげると治る事が多いです。
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演算子を使います。
- chika_008
- ベストアンサー率80% (20/25)
この場合ですと、 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はどういう役目をもっているのでしょうか? 使ったことのない演算子で、解説書を読んでも良く分かりません。 教えていただけますか?
お礼
ありがとうございます。 キャストも含め意味が理解できました。