0

したがって、アイテムのインベントリがあり、配列にはムービークリップであるアイテムのインスタンス名があります。すべてのアイテムのボタンモードがtrueになるようにしたいです。

すべてが i.buttonMode = true まで機能します。私はこれを取得します: 1119: 静的タイプ String の参照を介した、おそらく未定義のプロパティ buttonMode へのアクセス。しかし、インスタンス名を使用すると、Inv_1.buttonMode = true のようなものが機能します。

主な質問は、どうすれば配列を反復処理して、各インスタンス名をボタンにできるかということです。

(私も getChildByName.(i).buttonMode = true; を試しました)、それはうまくいきませんでした。:S

package  {
import flash.display.*;
import flash.events.*;

public dynamic class Drag extends MovieClip {
    var Inventory:Array =  ["Inv_1", "Inv_2", "Inv_3", "Inv_4t", "Inv_5"]; 

    public function Drag():void {
        for (var i:String in Inventory){ 
            i.buttonMode = true;
            }
        }
    }

}

4

2 に答える 2

1

配列は、 MovieClipsInventoryではなく、文字列のコレクションです。

それらが子表示オブジェクトのインスタンス名である場合はgetChildByName、ドット表記ではなく、関数として実装します。

また、定義されていない return にgetChildByNameも注意してください。オブジェクトを適切な型としてキャストします。DisplayObjectbuttonModeMovieClip

package  {
import flash.display.*;
import flash.events.*;

public dynamic class Drag extends MovieClip {
    var Inventory:Array =  ["Inv_1", "Inv_2", "Inv_3", "Inv_4t", "Inv_5"]; 

    public function Drag():void {
        for (var i:String in Inventory) {
            MovieClip(getChildByName(i)).buttonMode = true;
            }
        }
    }
}
于 2012-05-26T04:50:11.933 に答える
1

ムービー クリップ インスタンスではなく、文字列の配列を作成しました。

インスタンス名を宣言し、それらをベクトルに追加します。

package
{
    import flash.display.*;
    import flash.events.*;

    public dynamic class Drag extends MovieClip
    {
        private var Inv_1:MovieClip;
        private var Inv_2:MovieClip;
        private var Inv_3:MovieClip;
        private var Inv_4:MovieClip;
        private var Inv_5:MovieClip;

        public function Drag():void
        {
            var Inventory:Vector.<MovieClip> = new <MovieClip>[Inv_1, Inv_2, Inv_3, Inv_4t, Inv_5]; 

            for (var i:MovieClip in Inventory)
            { 
                i.buttonMode = true;
            }
        }
    }
}
于 2012-05-26T04:54:31.437 に答える