2015-08-20 52 views
0

我有一个自定义事件类,并希望插入多个参数(如本机事件:MOUSE_UP,CLICK,ROLL_OVER)。以下是我的代码到目前为止:如何为自定义事件创建多个类型和参数?

package 
{ 
    import flash.events.Event; 

    public class MenuGeneratorEvent extends Event 
    { 
     public static const PASS_PARAMS:String = "passParams"; 

     public var param1:String = new String(); 

     public function MenuGeneratorEvent(type:String, str:*, bubbles:Boolean = false, 
               cancelable:Boolean = false):void 
     { 
      this.param1 = str; 

      super(type, bubbles, cancelable); 
     } 

     override public function clone():Event 
     { 
      return new MenuGeneratorEvent(type, param1, bubbles, cancelable); 
     } 
    } 
} 

我正在使用Flash Professional CC 2015.是否可以这样做?

+0

这是完全可以这样做的。但是你的问题似乎并不指向你的实际问题。至少这是我从答案下面的评论中读到的。 – karfau

回答

2

只需将它们添加为构造函数参数,并使其在外部可见就像您使用param1所做的那样。 如果你有许多参数要作为构造函数参数传递,你总是可以将它们包装在另一个对象中。如果你想直接从事件对象访问它们,只需为它们创建访问者:

public class MenuGeneratorEvent extends Event 
{ 
    public static const PASS_PARAMS:String = "passParams"; 

    private var params:Object; 

    public function MenuGeneratorEvent(type:String, params:Object, bubbles:Boolean = false, 
              cancelable:Boolean = false):void 
    { 
     this.params = params; 

     super(type, bubbles, cancelable); 
    } 

    override public function clone():Event 
    { 
     return new MenuGeneratorEvent(type, params, bubbles, cancelable); 
    } 

    public function get param1():String{return params.param1;} 
    public function get param2():Number{return params.param2;} 
    public function get param3():Object{return params.param3;} 
} 
+0

你好,我试过你的代码,但无法使它正常工作。请看看这段代码:http://sudrap.org/paste/text/616385/我做错了什么?我没有得到任何输出。 – onurcano22

+0

不,不,不......参数只是事件对象构造函数的参数。当你创建一个事件时你会传递它,所以当你听到这个事件时你可以访问像event.param1这样的参数。 –

+1

如果你想要多个事件TYPES,那么你可以像使用PASS_PARAMS一样创建多个静态常量。然后你可以从你的事件类中获得这个类型。而那些常量只是一致的。你甚至可以试试这样写'dispatchEvent(new MenuGeneratorEvent(“blabla”,“test”));'和sill监听这个事件 - 'addEventListener(“blabla”,onProcessedEvent);' –

相关问题