0

私はプログラミングに少し慣れていないということから始めましょう。これがばかげた質問である場合は申し訳ありません。

アプリケーションで実行中のタイマーがあり、間隔ごとに、blueBall という名前の MovieClip の新しいインスタンスを作成します。私のコードは次のとおりです。

var randomX:Number = Math.random() * 350;
var newBlue:mc_BlueBall = new mc_BlueBall  ;
newBlue.x = randomX;
newBlue.y = -20;

for(var i:Number = 0;i < blueArray.length; i++)
{
newBlue.name = "newBlue" + i;
}

blueArray.push(newBlue);
addChild(newBlue);

}
var randomX:Number = Math.random() * 350;

var newBlue:mc_BlueBall = new mc_BlueBall  ;
newBlue.x = randomX;
newBlue.y = -20;

for(var i:Number = 0;i < blueArray.length; i++)
{
newBlue.name = "newBlue" + i;
}

blueArray.push(newBlue);
addChild(newBlue);

}

私の質問は、配列内の新しく作成された各オブジェクトが独自の hitTestObject イベントを持つようにするにはどうすればよいですか? ユーザーのアイコンが newBlue オブジェクトの 1 つに触れた場合、その newBlue オブジェクトが削除され、スコアが 1 ポイント上がるようにしたいと考えています。

ありがとう!

4

1 に答える 1

1

ここで質問に答えるのはこれが初めてですが、助けていただければ幸いです!メイン ゲーム ループ用のタイマーがあると仮定すると、フレームごとに 1 回、次のようなことを試す必要があります。

//For each blue ball in the array
for(var i:int = 0; i < blueArray.length; i++) {
    //If it touches the player
    if(blueArray[i].hitTestObject(thePlayerMC)) {
        //Increment the score
        score++;
        //Remove from stage and array
        removeChild(blueArray[i]);
        blueArray.splice(i, 1); //<-At index i, remove 1 element
        //Decrement i since we just pulled it out of the array and don't want to skip the next array item
        i--;
    }
}

これは手っ取り早い解決策ですが、非常に効果的で一般的に使用されています。

于 2013-11-06T22:05:30.937 に答える