我们有一个按钮符号,在多个场景中作为实例重复插入。 此按钮在场景之间链接,基本上执行相同的功能。
有没有办法将eventListener MouseEvent.CLICK添加到符号本身,这样我们就不必为每个场景中的每个实例重写一个监听器?
答案 0 :(得分:2)
创建一个类,即'LinkingButton'。在这个类中创建一个单击处理程序,它可以做你想要的。
然后,您需要将您的班级“链接”到图书馆中的符号。
如果操作正确,您只需将符号拖到舞台上即可立即使用。或者,如果您更喜欢使用代码,它也很简单:
var myButton:LinkingButton = new LinkingButton();
addChild(myButton);
答案 1 :(得分:0)
您既不能在符号上接收鼠标事件(即Class
),也不能从中发送任何事件。所以这是不可能的。
您可以创建一个新的Sprite符号,将自定义Button放入其中,然后在该Sprite内的框架脚本中添加一个侦听器 - 但这确实非常混乱。
最简单的方法是将Event.ADDED的监听器添加到阶段 - 只要在显示列表中的任何位置添加DisplayObject
的任何新实例,就会捕获该监听器 - 并使处理函数添加适当的监听你的特殊按钮的每个实例:
function onInstanceAdded( event:Event ) : void {
if( event.target ) is MySpecialButton
event.target.addEventListener( MouseEvent.CLICK, onSpecialButtonClick );
}
function onSpecialButtonClick( event:MouseEvent ) : void {
doMagicStuffHere();
}
stage.addEventListener( Event.ADDED, onInstanceAdded );