-1

コードを実行すると、次のエラーが発生します。

TypeError: エラー #1009: null オブジェクト参照のプロパティまたはメソッドにアクセスできません。スクリプトで::敵/moveToward()

プレイヤーをステージに登録することと関係があると思います。これまでのところ、Engine、Player、Enemy の 3 つのクラスがあります。私は現在、横スクロールのビートエムアップゲームを構築しています。

package scripts 
{
    import flash.display.*;
    import flash.events.*;
    import flash.events.Event;
    import flash.display.Stage;

    public class Enemy extends MovieClip
    {
        var enemySpeed: Number = 3;
        var xDistance: Number = 50
        var yDistance: Number = 20;

        public var player: Player;

                public function Enemy()
                {
                        this.addEventListener(Event.ADDED_TO_STAGE, addListeners)
                }

        public function addListeners(event: Event):void
        {
            stage.addEventListener(Event.ENTER_FRAME, moveToward);
            trace("handeled");
        }

        function moveToward(event: Event):void
        {
            if(this.x < player.x - xDistance)
            {
                this.x += enemySpeed;
                this.scaleX = -1;
            }
            if(this(root).x > player.x+xDistance)
            {
                this.x -= enemySpeed;
                this. scaleX = 1;
            }

            if(this.y < player.y-yDistance)
            {
                this.y += enemySpeed;
            }
            if(this.y > player.y+yDistance)
            {
                this.y -= enemySpeed;
            }
        }
4

1 に答える 1

0

「moveForward」が呼び出されたときに「Player」が初期化またはインスタンス化されていない可能性があります。これは通常、ムービークリップの最初のフレーム イベント中に発生します。moveForward メソッドにステートメントを追加することを検討してください。

if ( player == null )
{
    return;
}
于 2012-07-10T16:57:09.483 に答える