0

それで、コンボという名前のこの配列があります。ユーザーのクリックに応じてムービークリップで埋めたい(ユーザーが1をクリックした場合は、配列に「1」を追加して領域に表示します。

問題は、それを行う方法がわからないことです。

記録のために、私は火、風、土、精神の 4 つのムービークリップを持っています。ユーザーがそれらのいずれかをクリックすると、配列が更​​新されます。配列の最大長は 6 で、常に「true_combo」配列に対してチェックされます。

私の質問は次のとおりです。

1) 長さが 6 に達した場合、配列内の最も古い項目を削除するにはどうすればよいですか?
2) Combo によると、ムービークリップを隣り合わせに表示するにはどうすればよいですか (新しいムービークリップではなく、ボタンの小さいバージョン)。
3) ステージ上のムービークリップ リストを動的に更新するにはどうすればよいですか?

これは私の現在の fla のストリップ バージョンです https://www.dropbox.com/s/17d9rgclz29ft1u/Untitled-1.fla

これは、コンボを真のコンボと照合するコードです。

function checkthis(e:Event)
{
    if(combo.length == truecombo.length)
    for(var o:int = 0; o < combo.length; o++) 
    {
        if(combo[o] == truecombo[o])
        {
            bravo.play();
        }
    }
}
4

1 に答える 1

1

1 (配列の最初の項目を削除) または(配列の最後の項目を削除)
を使用できますArray.shift()Array.pop()

2 / 3
for ループを使用し、配列に従ってアイテムの位置を変更します。配列内のアイテムがムービークリップへの参照であると仮定すると、これは使用できる関数になります。

function add(clip:DisplayObject)
{
    if (this.combo.length >= 6) 
{
    // remove child and remove it from the list
    removeChild(this.combo.shift());
}
this.combo.push(clip);
this.addChild(clip);

    reorder();
}

function reorder()
{
   for(var i:int = 0; i < combo.length; i++)
   {
       combo[i].x = i * 50;
   }
}

更新:
この実装の例をここ(Flash CS6 ファイル) からダウンロードするか、ここで見ることができます


更新 2

function checkthis(e:Event)
{
    var isValid:Boolean = true;
    if(combo.length == truecombo.length)
    {
      for(var o:int = 0; o < combo.length; o++) 
      {
        if(combo[o] != truecombo[o])
        { 
            // if one item isnt the same it should fail.
            isValid = false;
        }
      }
    }
    if (isValid)
    {
        bravo.play();
    }
}
于 2012-12-03T09:58:25.137 に答える