我正在尝试在动作脚本文件中编写Flash AS3项目的导航。在项目中有几个框架,其中包含用于浏览项目的按钮。我为第一帧编码的那些工作,但在任何其他帧上他们没有。
这是代码:
package
{
import flash.display.MovieClip;
import flash.events.MouseEvent;
public class Main extends MovieClip
{
public function Main()
{
trace("it's working");
btn_one.addEventListener(MouseEvent.MOUSE_UP,eventResponse1);
btn_two.addEventListener(MouseEvent.MOUSE_UP,eventResponse2);
btn_three.addEventListener(MouseEvent.MOUSE_UP,eventResponse3);
btn_four.addEventListener(MouseEvent.MOUSE_UP,eventResponse4);
btn_five.addEventListener(MouseEvent.MOUSE_UP,eventResponse5);
btn_six.addEventListener(MouseEvent.MOUSE_UP,eventResponse6);
}
function eventResponse1(evt:MouseEvent):void
{
gotoAndStop("game");
}
function eventResponse2(evt:MouseEvent):void
{
gotoAndStop("specimenroom");
}
function eventResponse3(evt:MouseEvent):void
{
gotoAndStop("how");
}
function eventResponse4(evt:MouseEvent):void
{
gotoAndStop("game");
}
function eventResponse5(evt:MouseEvent):void
{
gotoAndStop("feedback");
}
function eventResponse6(evt:MouseEvent):void
{
gotoAndStop("home");
}
}
}
在代码中前五个按钮可以工作,但第六个按钮没有。此按钮不位于主时间轴的第一帧,它位于第二帧和第三帧。它根本不起作用。让它们工作需要什么代码?非常感谢任何帮助,谢谢。
答案 0 :(得分:1)
该按钮必须出现在执行AS3代码的帧上。
例如,如果您的按钮位于第2帧,而您尝试添加侦听器的代码位于第1帧,则无效。
我假设你使用的是Document类,所以同样适用。只有在构造函数代码运行时舞台上存在的内容才可供您使用。
你可以做的是有一个方法,当你去那个框架时,将监听器添加到适当的按钮。
还有其他解决方案需要对您当前使用时间轴更改屏幕的设计进行更彻底的更改,因此我建议使用最少的更改。
因为您在评论中提出了另一种可能的解决方案,即不通过时间轴框架浏览不同的屏幕,而是通过包含UI屏幕的代码和MovieClip符号进行操作。您只需根据需要在代码中创建屏幕实例,并在执行此操作时正确处理其处理程序。
答案 1 :(得分:0)
其他解决方案是在第一帧上可以访问make按钮并将其alpha更改为零,以使其不可见。这就是为什么你不必改变代码而只是改变时间线。