actionscript 3 中的错误 1009,实例在舞台中正确命名

error 1009 in actionscript 3 with instance correctly named in the stage

我试图在 3 个帧中制作 3 个相似文本的动画,SWF 文件工作正常,但编译器每次点击都会生成错误 1009。 调试告诉我问题出在 blocco_anno1.addEventFrame 方法中,但跟踪它,它被识别为 object MovieClip.

blocco_anno1.addEventListener(Event.ENTER_FRAME, entrata1);
blocco_anno1.alpha = 0;

function entrata1(event:Event)
{
    blocco_anno1.alpha += 0.05;
    if(blocco_anno1.alpha >= 1)
    {
        blocco_anno1.removeEventListener(Event.ENTER_FRAME, entrata1);
    }
}


stop();


comandi.anno2_btn.addEventListener(MouseEvent.CLICK , function()
{
    blocco_anno1.addEventListener(Event.ENTER_FRAME , da1a2);
    trace(blocco_anno1)
});

function da1a2(event:Event)
{
        blocco_anno1.alpha -= 0.07;
        if(blocco_anno1.alpha <= 0)
        {
            blocco_anno1.removeEventListener(Event.ENTER_FRAME, da1a2);
            gotoAndPlay(4);
        }
};


comandi.anno3_btn.addEventListener(MouseEvent.CLICK , function()
{
    blocco_anno1.addEventListener(Event.ENTER_FRAME , da1a3);
    trace(blocco_anno1)
});

function da1a3(event:Event)
{
        blocco_anno1.alpha -= 0.07;
        if(blocco_anno1.alpha <= 0)
        {
            blocco_anno1.removeEventListener(Event.ENTER_FRAME, da1a3);
            gotoAndPlay(5);
        }
};

第 3 帧,层 "corpo",第 28 行:

blocco_anno1.removeEventListener(MouseEvent.CLICK, da1a2);

这里应该是:

blocco_anno1.removeEventListener(Event.ENTER_FRAME , da1a2);

接下来。第 36 行:

blocco_anno1.addEventListener(Event.ENTER_FRAME , da1a3);

如果你点击II然后点击III,第三帧的代码会被调用:

comandi.anno3_btn.addEventListener(MouseEvent.CLICK , function()
{
   blocco_anno1.addEventListener(Event.ENTER_FRAME , da1a3);
});

但是在第四帧你没有blocco_anno1

要解决此问题,请避免使用匿名处理程序。你的代码应该是这样的:

comandi.anno2_btn.addEventListener(MouseEvent.CLICK, clickAnno2);

function clickAnno2(event:MouseEvent):void
{
    blocco_anno1.addEventListener(Event.ENTER_FRAME , da1a2);
}

在调用 'gotoAndStop' 之前,您应该删除所有事件处理程序。