0

Actionscript3 と Adob​​e Flash CS5.5 を使用して、初めてのフラッシュ ゲームを作成しています。ゲームのコンセプトは、宇宙船に乗って小惑星を避けようとすることです。小惑星を避ける時間が長いほど、より多くのポイントを獲得できます。私はそれがあまり独創的ではないことを知っています。今日、突然、次のエラーが発生しました。

TypeError: Error #2007: Parameter hitTestObject must be non-null.

このエラーは、宇宙船が小惑星に衝突しても何も起こらないことを示しています。宇宙船はちょうど通り抜けます。

これを修正する方法がわかりません。これが私のコードです:

public class AvoiderGame extends MovieClip
{   
    public var army:Array;
    public var gameTimer:Timer;
    public var avatar:Avatar;

    public function AvoiderGame()
    {
        army=new Array();

        avatar=new Avatar();
        addChild( avatar );
        avatar.x=mouseX;
        avatar.y=mouseY;

        gameTimer= new Timer (25);
        gameTimer.addEventListener(TimerEvent.TIMER, onTick);
        gameTimer.start();

    }
    public function onTick(timerEvent:TimerEvent):void
    {
        if (Math.random() < 0.1)
        {
            var randomX:Number = Math.random() * 400;
            var newEnemy=new Enemy(randomX,-15);
            army.push( newEnemy );
            addChild( newEnemy );
        }

            avatar.x=mouseX;
            avatar.y=mouseY;
            for each ( var enemy:Enemy in army ) 

            enemy.moveDownABit();
        {
            if (avatar.hitTestObject( enemy ))
            {
                gameTimer.stop();
                dispatchEvent( new AvatarEvent( AvatarEvent.DEAD ) );
            }
        }
    }
}

}

4

1 に答える 1

1

ブラケットが台無しになっているようです。for eachenemy.moveDownABit()は行を実行するだけです。forループが開始した直後にブラケットをその上に移動します。

現在のブラケットでは、敵が範囲外になっています。そのため、エラーが伝えているのは Null です。

于 2012-04-21T03:17:07.933 に答える