AS3错误1009空对象

时间:2015-03-31 20:41:35

标签: actionscript-3 flash object null

我不知道为什么它一直说错误1009!?

这里是代码

    import flash.events.Event;

    var mysound:Sound = new Avondbos(); 
    var channel1:SoundChannel = mysound.play();


    start.addEventListener (MouseEvent.CLICK, veeg);
    start.buttonMode = true;

    function veeg (e:Event):void
    {
        maan.gotoAndPlay("2");
        start.gotoAndPlay("2");
        headphone.gotoAndPlay("2");
        rupsje.gotoAndPlay("2");
    }

    maan.land.blad.addEventListener (MouseEvent.CLICK, klikblad);
    maan.land.blad.buttonMode = true;

    function klikblad(e:Event):void
    {
        if (maan.land.blad.currentFrameLabel == "halfblad")
        Object(root).gotoAndStop(1, "Cocon2");
    }

    maan.land.blad.addEventListener (MouseEvent.CLICK, klikblad2);

    function klikblad2(e:Event):void
    {
        maan.land.blad.gotoAndPlay("130");
        rupsje.gotoAndPlay("293");
}    

错误:

TypeError: Error #1009: Cannot access a property or method of a null object reference.
at Project_550690_Robin_Janssen_fla::MainTimeline/klikblad2()

无法弄清楚我做错了什么,Flash也没有帮助。

提前致谢,

罗宾

2 个答案:

答案 0 :(得分:0)

当您尝试访问不存在的内容时,会出现错误1009。

因此,当用户点击时,它会移动到另一个框架,但如果用户再次点击,则无法执行,因为代码不再存在。通过返回的错误,我们可以看到您的程序正在尝试访问该函数' klikblad2()'当它不存在于该帧上时(但它之前所在的帧)。

我建议添加:

whateverTheTargetIs.removeEventListener(MouseEvent.CLICK, eventNameHere);

到所有功能的末尾,转到代码不会出现的另一个框架。这样可以解决您的问题,因为它不再能够聆听点击,这意味着它不会尝试访问不存在的(在该帧上无论如何)功能;所以它不会返回任何错误。

对不起,如果这看起来很复杂或难以理解,只要说你是否仍然感到困惑。

答案 1 :(得分:0)

确定。修好了!

我改变了功能的顺序。

maan.land.blad.addEventListener(MouseEvent.CLICK, klikblad2);
maan.land.blad.buttonMode = true;

function klikblad2(e: Event): void {
    if (maan.land.blad.currentFrameLabel == "heelblad")
    maan.land.blad.gotoAndPlay("130");
    rupsje.gotoAndPlay("293");
}

maan.land.blad.addEventListener(MouseEvent.CLICK, klikblad);
maan.land.blad.buttonMode = true;

function klikblad(e: Event): void {
    if (maan.land.blad.currentFrameLabel == "halfblad")
    this.gotoAndStop(1, "Cocon2");
}