转到Action Script 3.0中的下一帧

时间:2011-10-06 08:03:31

标签: flash actionscript-3 adobe

我遇到了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个模糊引用。

2 个答案:

答案 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