我们有一个按钮符号,它在多个场景中作为实例重复插入。这个按钮在场景之间链接,基本上执行相同的功能。
有没有办法将 eventListener MouseEvent.CLICK 添加到符号本身,这样我们就不必为每个场景中的每个实例重新编写一个监听器?
我们有一个按钮符号,它在多个场景中作为实例重复插入。这个按钮在场景之间链接,基本上执行相同的功能。
有没有办法将 eventListener MouseEvent.CLICK 添加到符号本身,这样我们就不必为每个场景中的每个实例重新编写一个监听器?
Create a class, ie 'LinkingButton'. Inside this class create a click handler which would do what you want.
Then you will need to 'link' your class to the symbol in your library.
If done correctly you only will need to drag the symbol to the stage and it should work straight away. Or if you prefer to use the code it's simple, too:
var myButton:LinkingButton = new LinkingButton();
addChild(myButton);
您既不能在符号(即 a 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 );