0

flash cs6内に、エクスポート設定をabc.Gameboardとして設定したフラッシュムービークリップを描画しました。ゲームボード内には、abc.Pieceとしてエクスポートする一連のピース(シンボル:Piece)があります。基本クラスはMovieClipに設定されており、クラスファイルも含まれています。ピースには、ヒット、オーバーなどのフレームラベルがあります。私の問題は、コード内のピースにアクセスすることです。gotoAndPlay( "mine")-現時点では、イベントはボードの最後のピースである1回だけ発生します。この最後のピースにフレームアクションを設定できますが、各ピースに対して同じことを行う方法を理解したいと思います。

ステージにゲームボードを追加します

var gb:Gameboard = new Gameboard();
gb.name = "gb001";
contextView.addChild(gb);

それで

contextView.addEventListener(Event.ADDED, thingAdded);

private function thingAdded(event:Event):void
{
    var type:String = event.target.toString();
    switch(type)
    {
        // this runs only once - i want it to run for each piece that is inside the symbol
        case "[object Piece]":

        var p:MovieClip = event.target as Piece;
        p.gotoAndPlay("mine");
        break;
    }
}

またはそれが素晴らしいだろうより良い方法がある場合..これはかなり不格好に見えます

編集:私がゲームボードを構築しようとしている方法についてもう少し情報イラストレーターで図形のコレクションを描画します-それをマスクします(ゲームボード領域)。グラフィックとしてFlashにインポートします。グラフィックをいくつかのムービークリップシンボルに変換します(JSFLがドリルダウンしてマスクされたピースにアクセスできるようにします)-JSFLスクリプトを実行し、00個のピース​​を作成します。次に、PieceとGameboardでエクスポート設定を設定し、GameboardをcontextViewに追加します。

4

2 に答える 2

0

ピースの中の彼らのゲームボードで?あなたのゲームボードの構造を正確に知りたいです。

あなたが正しいなら。これを試して:

function thingAdded(e:Event):void
{
    if(!e.target is Gameboard) return;

    var mc:Gameboard = Gameboard(e.target);

    var i:int = 0;
    while(i<mc.numChildren)
    {
        if( mc.getChildAt(i) is Piece)
        {
            var piece:Piece = Piece(mc.getChildAt(i));

            piece.gotoAndStop(2);
        }
        i++;
    }
}

これが私のサンプルコードです:Gameboard

于 2013-03-03T11:55:09.057 に答える
0

私は実際にこれについての記事全体を一度書いた。イベントは、ADDED追加されるDisplayObjectごとに1回発生する必要があります。泡立たない、を使用していないことを確認しますADDED_TO_STAGEか?を使用している場合はADDED_TO_STAGE、useCaptureフラグをtrueに設定して、すべての子に対して起動する必要があります。

プロセスにRobotLegsを関与させたい場合は、異なる方法で動作させたい特定のボタンごとに「マーカー」クラスを作成し、動作を管理するクラスごとにメディエーターを登録するのがおそらくより良い方法です。 。Robotlegsには、ADDED_TO_STAGEをリッスンしてこれを行うためのフックがすでに組み込まれています。

ただし、Flash IDEを使用して、ステージに物を置くことも検討できます。その場合、GameBoardインスタンスは、メインドキュメントクラスのコンストラクターで準備が整い、必要な操作を実行できるようになります。

MPOは、 Gameboardの外部にあるロジックは、内部でどのように機能するかを認識したり気にしたりするべきではなく、正直なところ、ボタンオーバー状態などの単純なものを処理するのはGameBoardの責任ではないはずです。それはボタン自体次第です。ボタンを切り替える必要がない場合、またはSimpleButtonが処理する以上のものを使用する必要がない場合は、ライブラリでボタンインスタンスをMovieClipではなくButtonとして宣言し、自分でコーディングする代わりにすべてを無料で入手できます。

優れたコーダーであることの一部は、すべてをコーディングしない方法を理解できることです。

于 2013-03-03T19:49:30.567 に答える