私はマイナーゲームを作成しています(金のかけらがあり、フックで捕まえる必要があります)。「Gold」という名前の MovieClip(root) のすべての子を取得するように Main クラスを変更し、それらを Array(boulders[]) に配置して、後で衝突をチェックします (すべての「Gold」MovieClip を設計してステージに配置します)。レベル)。プレーヤーがすべてのゴールドを収集すると (玉石 array.length <= 0 の場合)、次に goToAndStop(nextLevel) で、再びステージからゴールドの MovieClip を取得し、名前が == "Gold" の場合は、それを玉石に置きます[ ]。何が起こったのか: 最初のレベル (フレーム 2 の原因はフレーム 1 がプリローダー) ではすべて問題ありません - ステージ (デザイン モード) に 2 つの金の MovieClip があり、2 つの金すべてが配列に配置されて表示されます。2 番目のレベルには 4 つのゴールドがあり、そのうちの 2 つだけが配列に配置されて表示されます。第 3 レベルでは、ステージ上に 7 つのゴールドをデザインしましたが、3 つだけが表示され、ボールダー アレイに配置されます。次のフレームのゴールド ムービークリップのカウントから、(前のフレームの) ゴールドのほぼ前のカウントが差し引かれます。誰か何か考えはありますか?
Main.as コードを配置しています。
public function createLevel(){
nextLevel = this.currentFrame + 1;
for (var i:uint = 0; i < MovieClip(root).numChildren; i++){
if(MovieClip(root).getChildAt(i).name=="Gold")
{
this.addChild(MovieClip(root).getChildAt(i));
boulders.push(MovieClip(root).getChildAt(i));
}
}
placePod();
stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyPress);
stage.addEventListener(KeyboardEvent.KEY_UP, onKeyRelease);
addEventListener(Event.ENTER_FRAME, updateStatus);
}
ここでは、"Gold" という名前のすべての子をボルダー アレイに追加し、ステージに配置します。次に、ポッドとロッドを追加します。
private function placePod():void {
pod = new Pod();
addChild(pod);
pod.createRod();
}
次に、キーの押下をリッスンしてボルダーを削除する関数を次に示します。次に、boulder.length <= 0 の場合、すべてのリスナーと goToAndStop(nextLevel) を削除し、createLevel() 関数を再度呼び出して、次のフレームのゴールド ムービークリップを再度読み込みます。ここで、上で説明した問題が発生します。
private function updateStatus(e:Event):void {
if (!left && !right) {
pod.setSpeed(0);
} else if (left && right) {
pod.setSpeed(0);
} else if (left) {
pod.setSpeed(-4);
} else {
pod.setSpeed(4);
}
for (var i in boulders) {
boulders[i].updateStatus();
if (boulders[i].remove) {
removeBoulder(boulders[i]);
boulders.splice(i, 1);
}
}
if(boulders.length <= 0)
{
pod.removeRod();
removeChild(pod);
stage.removeEventListener(KeyboardEvent.KEY_DOWN,onKeyPress);
stage.removeEventListener(KeyboardEvent.KEY_UP,onKeyRelease);
removeEventListener(Event.ENTER_FRAME, updateStatus);
MovieClip(root).gotoAndStop(nextLevel);
createLevel();
}
}