-1

これについてはお許しください(私はFlashを初めて使用します)が、これを見つけるために3日間どこでも検索しました。さまざまなことを試しましたが、何も機能しないようです。これは単純なはずです...

シナリオ:単純なゲーム、プレイヤーは宇宙を飛び回って悪者を撃ちます。(この素晴らしいチュートリアルの開始手順:http://www.makeflashgames.com/tutorials/tut4.php

衝突が検出されたときに敵を爆発させたいと思います。爆発アニメーションを使用して新しいムービークリップを作成し、そのムービークリップを敵のムービークリップのフレームにドロップしました。このフレームは、Explodeというラベルを付けました。

GameController.asで、弾丸の衝突が検出されたときにEnemyを削除するためのコードに移動し、removechildコードを削除して、次のように置き換えました。Enemy.gotoAndPlay( "Explode"); これにより、エラー1061が発生します。静的型Classの参照を介して、未定義の可能性があるメソッドgotoAndPlayを呼び出します。

_root.Enemy.gotoAndPlay( "Explode");を試しました。それは機能しませんでした(私は_rootがas3で機能しないことを読みました)

私は何が欠けていますか?

私が書いたコードは、いくつかの異なる領域にあります。gamecontroller.as私が持っているように

        for (var i=bullets.length - 1; i >= 0; i--)
        {
            for (var j=enemies.length - 1; j >= 0; j--)
            {
                if (bullets[i].hitTestObject(enemies[j].collisionArea))
                {

                    playerScore +=  enemies[j].getPointsWorth();

                    mcGameStage.removeChild(bullets[i]);
                    bullets.splice(i,1);

                    Enemy.gotoAndPlay("Explode");

                    break;
                }
            }
        }

gotoandplayを削除して、

mcGameStage.removeChild(enemies [j]); enemies.splice(j、1);

その後、ゲームは正常に実行されます(爆発アニメーションなし)

@SunilD.:あなたのコードは魅力のように機能します。しかし、それは私に新しい問題を残しました。爆発アニメーションが終了したら敵を削除する必要があります(フレーム35)このコードを試しました

enemy.addEventListener(Event.ENTER_FRAME,checkFrame);

function checkFrame(event:Event):void
    {
        if (enemy.currentFrame  ==  35)
            {
                  mcGameStage.removeChild(enemies[j]);
                  enemies.splice(j,1);
                  enemy.removeEventListener(Event.ENTER_FRAME,checkFrame);
            }
    }

これにより、エラー#2007が発生します。パラメータの子はnull以外である必要があります。flash.display :: DisplayObjectContainer / removeChild()のMethodInfo-243()

何か案は?

4

1 に答える 1

0

あなたが得ているエラーは、あなたがそうするとき、あなたはクラス自体のメソッドEnemy.gotoAndPlay("Explode");を呼び出そうとしているということです。代わりに、Enemyクラスのインスタンスでメソッドを呼び出す必要があります。gotoAndPlay()EnemygotoAndPlay()

Enemy示したコードから、配列にクラスのインスタンスがあるように見えます(これはオブジェクトenemiesの配列です)。Enemyしたがって、これを行うことで、おそらく敵を爆発させることができるはずです。

var enemy:Enemy = enemies[j] as Enemy;
enemy.gotoAndPlay("Explode");
于 2013-03-08T04:22:42.227 に答える