我遇到了AS 3.0的问题 当你点击一扇门。你将进入下一帧。 在下一帧中,我尝试了同样的方法。但它不起作用。
这是代码:
FRAME1;
stop();
deur1.addEventListener(MouseEvent.CLICK, frame2);
function frame2(event:MouseEvent)
{
gotoAndStop(2)
}// This part works. I am now in frame 2.
式2:
deur2.addEventListener(MouseEvent.CLICK, frame3);
function frame3(event:MouseEvent)
{
gotoAndStop(3)
}
deur1 =门1。 deur2 =门2
门是一个按钮。
当我运行这个项目。我看到的只是每个FPS的所有帧。
这是我得到的编译错误: 编译错误
场景1,图层'layer1'第2帧,第1行:1023不兼容的覆盖
场景1,图层'layer1'第2帧,第1行:1021重复的函数定义。
场景1,图层'layer1'第2帧,第3行:1000对第2帧的不明确引用
MainTimeLine,Line2:对frame2的1000个模糊引用。
答案 0 :(得分:2)
由于您用于函数的名称,您会收到这些编译错误。似乎“ frame2 ”和“ frame3 ”是保留名称。尝试为您的函数使用更具描述性的名称,它将帮助您(和其他人)理解您的代码,这样您就不太可能遇到像这样的错误。
试试这个(我还更正了格式以提高可读性):
第1帧:
stop();
deur1.addEventListener(MouseEvent.CLICK, go_to_frame2);
function go_to_frame2(event:MouseEvent):void
{
gotoAndStop(2)
}
第2帧:
deur2.addEventListener(MouseEvent.CLICK, go_to_frame3);
function go_to_frame3(event:MouseEvent):void
{
gotoAndStop(3)
}
答案 1 :(得分:0)
为什么不制作更多通用功能?如果您已在第一帧中声明了这些功能,则可以从其他帧中访问它们。像这样:
// Frame 1
function goPrevFrame(event : MouseEvent) : void
{
nextFrame(); // or gotoAndStop(currentFrame +1);
}
function goNextFrame(event : MouseEvent) : void
{
prevFrame(); // or gotoAndStop(currentFrame -1);
}
stop();
deur1.addEventListener(MouseEvent.CLICK, goNextFrame);
// Frame 2
stop();
deur2.addEventListener(MouseEvent.CLICK, goNextFrame);
// Frame 3
stop();
deur3.addEventListener(MouseEvent.CLICK, goNextFrame);
要记住的一件事是你没有删除任何事件监听器,所以你应该使用弱引用。
deur3.addEventListener(MouseEvent.CLICK, goNextFrame, false, 0, true);
Clarifications regarding weak references in actionscript listeners