我正在使用Flash CS6,AS3为我的项目创建按钮。以下是我的代码:
Intro_btn.addEventListener(MouseEvent.MOUSE_DOWN, Intro_func);
function Intro_func(event:MouseEvent):void {
gotoAndStop("Intro");
}
当我在输出和编译器面板上运行它时没有出现错误,当我通过调试器运行它时会发生同样的错误。另外,我使用了完全相同的代码用于其他五个按钮,它们没有问题。请有人告诉我我的代码有什么问题???
答案 0 :(得分:0)
我需要了解您的代码的更多信息以及您正在使用的按钮类型,但我会尝试以下步骤:
1.-从组件检查器添加一个Button组件,设置其实例名称,并将相同的功能添加到Click事件中:
newButton.addEventListener(MouseEvent.CLICK, Intro_func);
function Intro_func(event:MouseEvent):void {
trace("function executed");
gotoAndStop("Intro");
}
2.-运行您的应用并测试是否使用此新按钮执行操作。如果这个测试通过,那么你的问题就是你的按钮。
在按钮上查看:
检查按钮的基类(确保它是MovieClip或Button类)
检查您的按钮是否已启用/禁用。
检查您的按钮或其子节点是否已将mouseEnabled和mouseChildren设置为 真。
检查画板顶部没有其他对象,或者在运行时通过代码添加。
我终于建议你设置useHandCursor = true;当你移动按钮时,这会将鼠标指针箭头替换为一只手(这只是为了测试你的按钮实际上是否与鼠标交互)。
希望这会有所帮助。
答案 1 :(得分:0)
抱歉延迟,但我找到了你的解决方案,这比你想象的要容易:你的画面延迟了。
您的Intro_btn脚本位于第10帧,但是在第一帧中,您告诉它转到第9帧(“Erhu”帧标签),因此永远不会调用设置事件侦听器的操作。
另请注意以下事项:
对象只存在于它们的帧生命周期中,如果你有一个从第5帧到第10帧的对象,它只会存在于那里,所以移动到前一帧或后一帧(例如第4帧和第11帧)将在内部删除该对象在记忆中以及他们的联合行动,用英语:
你把按钮放在第10帧并添加了它的MOUSE_DOWN监听器但是,如果你回到第0帧,由于该框架中不存在该按钮,它将与其监听器一起从内存中删除,所以如果你去从第0帧到不同于10的任何其他帧,您的按钮永远不会与其侦听器相关联。
所以我的建议是:
1.-将您的功能添加到第0帧:
function Intro_func(event:MouseEvent):void {
trace("function executed");
gotoAndStop("Intro");
}
2.-创建一个新图层。在此图层中,在Intro_btn所在的相同位置添加关键帧(第10帧),并使用空帧(无关键帧)填充此图层的其余时间轴,最后在同一图层中添加第10帧侦听器Intro_btn。的addEventListener。这样,该动作可用于第10帧的每个subsecuent帧。
希望这可以解决您的问题。