在制作adobe flash cs6游戏时我的动作脚本3.0出错

时间:2014-05-11 06:40:46

标签: actionscript-3 actionscript adobe typeerror

这是我的错误,当鸭子或电影剪辑击中它从右向左移动的屏幕时,它会消失,但它会消失并显示我的错误:

TypeError: Error #1009: Cannot access a property or method of a null object reference.
    at Duck/ducksmove()
    at flash.utils::Timer/_timerDispatch()
    at flash.utils::Timer/tick()           

我不知道如何解决这个错误,因为我还是新手,所以这不是我的主要动作,但它是我在动作脚本3.0中的鸭子动作 包{

import flash.display.MovieClip;
import flash.utils.Timer;
import flash.events.TimerEvent;
import flash.events.MouseEvent;

public class Duck extends MovieClip {


    var moveDuck:Timer = new Timer(10);
    var speedX:Number;

    public function Duck() {


        this.addEventListener(MouseEvent.CLICK,KillDuck); 
        moveDuck.addEventListener(TimerEvent.TIMER,ducksmove);
        moveDuck.start();

        speedX = 10;
    }
    function ducksmove(evt:TimerEvent):void
    {
        this.x -= speedX;
        if (this.x <=0)
        {
            moveDuck.stop();
            moveDuck.removeEventListener(TimerEvent.TIMER,ducksmove);
            this.parent.removeChild(this);
        }
    }

    function KillDuck(evt:MouseEvent):void
    {
        var p:MovieClip = this.parent as MovieClip;
            p.setScore();
            p.updatecount();
        this.removeEventListener(MouseEvent.CLICK,KillDuck); 
        this.parent.removeChild(this);
        moveDuck.addEventListener(TimerEvent.TIMER,ducksmove);
    }

} }

1 个答案:

答案 0 :(得分:0)

在最后一个函数killDuck中执行此操作:

this.parent.removeChild(this);

该对象不再存在,因此如果您向Timer moveDuck添加一个事件,当它被调用时,它会尝试移动一个不存在的MovieClip并崩溃。