0

すべての子供たちに同時に何かをさせる簡単な方法があるかどうか疑問に思っています。特に、ステージ上のすべてが地震のように前後に揺れることを望んでいます。ステージ上のすべての子供たちを特定して適切なコードを追加するのは少し難しいです。ステージ上の子供たちの数を常に把握しているわけではないからです。

また、それが違いを生むかどうかはわかりませんが、何かをaddChildするとき、ステージに追加するのに邪魔にならないことがあります.いくつかのボタンのようにthis.addChild(mybutton). ステージに直接追加していなくても、addChilded されたすべてのものにアクセスする方法があるかどうかわかりません。numChildren画面上のオブジェクトの数の値を返すと確信していますが、間違っている可能性があります...

私は何かをすることを考えていました

私のループの中で

if (numChildren >= 10 && nukeShakeTimer.currentCount == 0)
{
    nukeShakeTimer.start();
}
if (nukeShakeTimer.currentCount > 0)
{
    NukeShake();
}

ヌケシェイク

    public function NukeShake():void
    {
        numberChildren = numChildren;
        trace(numberChildren);
        while (numberChildren > 0)
        {
            var tempObject:Object = getChildAt(numberChildren)
            if (nukeShakeTimer.currentCount % 2 == 1)
            {
                tempObject.x += 10;
            }
            if (nukeShakeTimer.currentCount % 2 == 0)
            {
                tempObject.x -= 10;
            }
            numberChildren -= 1;
        }
        if (nukeShakeTimer.currentCount > 30)
        {
            nukeShakeTimer.reset();
        }
    }

これを試してみると、行の実行時エラーが発生し、RangeError: Error #2006: The provided index is out of bound.var tempObject:Object = getChildAt(numberChildren)というエラーが表示されます。

また、while ループを使用せずにこの操作をはるかに高速に実行できるように感じますが、そうではないかもしれません。助けてください、ありがとう!

4

1 に答える 1

1

ステージ上のすべての子供に話しかけたい場合は、それらをループする必要があります。Chernivが言うように、getChildAt使用する呼び出しを変更するとnumberChildren-1エラーが解決するはずです。

すべてがステージ上にあるかどうかは問題ではありません。ステージの子をループすると、オブジェクトを追加したコンテナーが取得されます。そのコンテナを移動すると、その子も移動します。(ただし、これらの子を個別に移動する必要がある場合は、さらに作業を行う必要があります)。

しかし...
あなたの特定のケースでは、画面上のすべてを同じ方向に同じ速度で一緒に振るだけのようです。この場合、すべてのオブジェクトをステージ上の 1 つのコンテナ スプライトに追加するだけです。次に、シェイク エフェクトを実行する場合、その 1 つのコンテナ オブジェクトを移動するだけで、すべてが一緒に移動します。

于 2013-09-24T19:26:14.013 に答える