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' 之前,您应该删除所有事件处理程序。
我试图在 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' 之前,您应该删除所有事件处理程序。