如果我从MouseEvent激活函数调用函数将无法正常工作?

时间:2012-01-03 19:15:25

标签: actionscript-3

我正在使用AS3在我的网站上构建一个非常简单的MP3播放器。到目前为止,播放和暂停按钮工作正常,但是当我尝试移动滑块然后单击暂停按钮时,它不会暂停,然后再次单击播放按钮会使其播放新文件。

我假设由于某种原因,当我从我的MouseEvent调用playMp3函数时,它在一个对象或其他东西而不是根目录,所以它就像加载一个新的声音文件,但我不知道如何解决这个问题。

这是我的代码,欢迎任何有关我的代码的其他建议,我是一个菜鸟,并且总是在寻找更好的方法来做事:

http://pastebin.com/uN8QFanX

2 个答案:

答案 0 :(得分:1)


看起来你的问题是由MOUSE_UP事件引起的。

在pickupSlider函数中添加:
parent.addEventListener(MouseEvent.MOUSE_UP,dropSlider);

但是在dropSlider函数中你只删除了MOUSE_MOVE的监听器,所以MOUSE_UP将保持caling dropSlider函数。如果您要添加:
parent.removeEventListener(MouseEvent.MOUSE_UP,dropSlider);
你的dropSlider函数应该可以正常工作。

// TIP
如果您从未删除它们,则不必每次在playMp3和pauseMp3函数中添加CLICK侦听器。您可以在开始时添加它们,并在需要时继续添加/删除按钮(或使用.visible true / false)。即使将对象从舞台上移除,监听器仍会附加到对象上。它是importatnt,因为如果有一天你想要移除对象并让听众离开它,垃圾收集器就不会接受它并且你会有内存泄漏。

答案 1 :(得分:0)

您似乎没有删除MOUSE_UP函数中的dropSlider()侦听器。 因此,当您单击暂停按钮(可能位于滑块轨道的左侧)时,它会调用dropSlider,其x值小于40,将曲目重置为开头。

将此行添加到dropSlider()函数中,您应该很高兴:

parent.removeEventListener(MouseEvent.MOUSE_UP, dropSlider);