2010-01-28 68 views
1

我正在Flash Builder中開發一個項目,該項目將加載由Flash CS4構建的文件。 Flash CS4中的代碼如下,它是一個doc類。我相信dispatchEvent已被調用:Flash Buider項目無法在Flash CS4項目中偵聽事件

package { 
import flash.display.MovieClip; 
import flash.events.Event; 

public class flashcs extends MovieClip 
{ 
    public function flashcs():void 
    { 
     dispatchEvent(new Event("onPlayerLoaded", true)); 
    } 

    public function playVideo():void 
    { 
     return; 
    } 
} 

}

在Flash Builder中,我用下面的代碼來聽的事件,但回調永遠不會叫:

  private function playerLoaded():void 
     { 
      Player = MovieClip(Loader.content) 
      Player.addEventListener("onPlayerLoaded",Callback); 
     } 
mx:SWFLoader id="Loader" source="http://localhost/flashcs.swf" init="playerLoaded()"

我想也許我只能聽一個SystemManager而不是MovieClip?因爲我有一個以前的項目,所加載的swf文件是由Flash Builder構建的,所以我毫不費力地收聽SystemManager。

謝謝。

回答

0

嘗試在complete event而不是init,如果dispatchEvent已被解僱,然後才能聽到它,你不會得到它。

<mx:SWFLoader id="Loader" source="http://localhost/flashcs.swf" complete="playerLoaded()"/> 

編輯:

在你加載的類延遲調度事件發射它,當對象被添加到舞臺:

package { 
import flash.display.MovieClip; 
import flash.events.Event; 

public class flashcs extends MovieClip 
{ 
    public function flashcs():void 
    { 
     addEventListener(Event.ADDED_TO_STAGE, ready); 
    } 

    private function ready():void { 
    removeEventListener(Event.ADDED_TO_STAGE, ready); 

    dispatchEvent(new Event("onPlayerLoaded", true)); 
    } 

    public function playVideo():void 
    { 
     return; 
    } 
} 
} 
+0

試過,但沒有運氣... – 2010-01-28 09:34:17

+0

好我做了一個編輯,但我不明白你爲什麼需要一個onPlayerLoaded事件,因爲你已經知道它是在從SWFLoader監聽完整的/ init事件時加載的。 – Patrick 2010-01-28 11:03:37

+0

謝謝,但它仍然無法工作。我使用它的原因是上層的要求。 – 2010-01-28 13:01:38