我经常在鼠标事件(例如,MouseEvent.CLICK)上执行一个必须移动到的函数/动作:
封装此类活动的最佳OOP方式是什么,以便我不会不断重写代码?
顺便说一句,我还应该提一下,这个函数也从一个显示对象移动到另一个显示对象,而不是它正在监听的正常事件......
答案 0 :(得分:1)
您可以设置事件处理程序以获取如下的单个参数:
protected function actionHandler(e:Event = null):void {
//handler code here.
}
然后,您可以通过MouseEvent引用它,任何扩展Event的内容,或者在不是事件驱动的情况下调用它而不提供参数。在处理程序中测试e的类型(或者如果e为null)可以让您更精确地控制在特定情况下应该做什么。
只要处理程序不是真的用于在这些不同的事件/环境中做两个完全不同的事情,这应该没问题;但是,如果您真的在处理程序中分支操作,则应使用多个事件处理程序来创建更易于维护的代码。
答案 1 :(得分:0)
请原谅我,但我不明白你的意思是说你必须 将一个功能从一个显示对象移动到另一个显示对象 。
根据我的理解,您希望在其他事件中使用鼠标单击事件/功能(如您指定的那样),而不管它被调用的位置。
如果是这样的话&正如你所说,这个函数经常被使用,我会说它是一个静态函数。
答案 2 :(得分:-1)
如果多个对象共享公共函数,则可以创建对象可以子类化的Abstract类。
public class MyDisplayObjectAbstract extends MovieClip { protected function mouseEventListener(event:Event):void { gotoAndStop('frameLabel') } protected function completeEventListener(event:Event):void { //do whatever } }
然后,您可以将对象链接到如下所示的类,如果需要,可以覆盖某些函数
public class ObjectOne extends MyDisplayObjectAbstract { override protected function mouseEventListener(event:Event):void { //do whatever } }