尽管没有编译器/输出错误,Flash CS6按钮仍然无法工作

时间:2015-02-04 02:46:48

标签: actionscript-3 button flash-cs6

我正在使用Flash CS6,AS3为我的项目创建按钮。以下是我的代码:

Intro_btn.addEventListener(MouseEvent.MOUSE_DOWN, Intro_func);
function Intro_func(event:MouseEvent):void {
    gotoAndStop("Intro");
}

当我在输出和编译器面板上运行它时没有出现错误,当我通过调试器运行它时会发生同样的错误。另外,我使用了完全相同的代码用于其他五个按钮,它们没有问题。请有人告诉我我的代码有什么问题???

2 个答案:

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

希望这可以解决您的问题。