代码之家  ›  专栏  ›  技术社区  ›  redconservatory

封装动作,以便可以从鼠标事件、动画或某个事件结尾执行

  •  0
  • redconservatory  · 技术社区  · 15 年前

    • 发生在一个事件上(比如,事件。完成)
    • 将另一项添加到阶段或从阶段中移除时发生

    封装这些活动的最佳OOP方法是什么,这样我就不会经常重写代码了?

    顺便说一下,我还应该提到,这个函数也被从一个显示对象移动到另一个,而不仅仅是它正在侦听的事件。。。

    3 回复  |  直到 15 年前
        1
  •  1
  •   Aaron    15 年前

    您可以将事件处理程序设置为采用以下单个参数:

    protected function actionHandler(e:Event = null):void {
        //handler code here.
    }
    

    然后您可以通过MouseEvent引用它,任何扩展事件的东西,或者在它不是事件驱动的情况下调用它而不提供参数。在处理程序中测试e的类型(或者如果e为null),可以让您更精确地控制在特定情况下要做什么。

    只要处理程序不是真的被用来在那些不同的事件/环境中做两件完全不同的事情,这应该是好的;但是,如果你真的在处理程序中分支操作,你应该使用多个事件处理程序来创建更多可维护的代码。

        2
  •  0
  •   loxxy    15 年前

    对不起,我不明白你所说的“必须”是什么意思 .

    据我所知,您希望在其他事件(如您指定的事件)期间也使用鼠标单击事件/函数,而不考虑调用它的位置。

        3
  •  -1
  •   PatrickS    15 年前

    如果多个对象共享公共函数,您可以创建一个抽象类,您的对象可以子类化。

    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
       }
    }