2017-05-22 14 views
0

私は2つのクラスを持っていて、イベントディスパッチを1つのクラスから他のクラスに試しました。ここではクラスを呼び出すためにボタンを使用しました。しかし、働かないで発送してください。イベントディスパッチャ

class name cusDispatcher.as 
package 

{

import flash.display.MovieClip; 
import flash.events.EventDispatcher; 
import flash.events.Event; 
import flash.events.MouseEvent; 
import Globe; 


public class CusDispatcher extends EventDispatcher 
{ 


    public function CusDispatcher():void 
    { 


     Globe.self.realstage.btn_mc.addEventListener(MouseEvent.CLICK, 
    doAction); 


    } 
    public function doAction(event:MouseEvent):void 
    { 
     dispatchEvent(new Event('myevent')); 

     } 

    } 

} 

クラス名EventDispatcherExample.as パッケージ iは、クラスを実行するために、このインスタンスを使用アドビCCにおいて{

import flash.display.DisplayObject; 
import flash.display.MovieClip; 
import flash.events.Event; 
import flash.events.EventDispatcher; 
import Globe; 

public class EventDispatcherExample extends EventDispatcher 
{ 


    public function EventDispatcherExample(Mc:MovieClip) 
    { 
      Globe.self.realstage = Mc; 
      var start:CusDispatcher = new CusDispatcher(); 

      Globe.self.realstage.addEventListener('myevent', handler); 
      trace("one"); 

    } 

    public function handler(event:Event):void 
    { 
     trace("My Event"); 


    } 
} 
} 

var Call:EventDispatcherExample = new EventDispatcherExample(this); 

アドビフラッシュCCのボタン(btn_mc)をクリックするたびに、 ディスパッチイベントのトレースが表示されません。これを分析して解決策を教えてください。

+0

をあなたの新しいディスパッチャを割り当てます* myevent **イベント。 – Organis

答えて

1

(EventDispatcherExampleの)他のクリックリスナーは機能していますか?

問題は、関数がこれらの変数がクリーンアップされて完了すると、関数内のローカル変数として

var start:CusDispatcher = new CusDispatcher(); 

をごCusDispatcherを宣言していることかもしれません。クラス変数として、あなたのクラスの先頭にそれを宣言するために試してみてください。そして、

private var start:CusDispatcher; 

public function EventDispatcherExample(Mc:MovieClip)... 

と** Globe.self.realstageが** *送出されませんので、それに

start = new CusDispatcher(); 
関連する問題