2011-11-07 9 views
-1

私はこのAS3コードを持っています。それは外部の.swfファイルをロードし、それを再生することになっています。ファイルがロードされたときに実行するイベントリスナーを追加しました。この関数は、ビデオを最下位レイヤーに移動して、ボタンを表示してから再生します。問題は、イベントリスナーがトリガーしないことです。誰も助けることができますか?前もって感謝します。Flash AS3イベントリスナーエラー

デイブ

var loadit:Loader = new Loader(); 
    var load_request:URLRequest = new URLRequest("http://www.friedmanllp.com/video/intro.swf"); 
    loadit.addEventListener(Event.COMPLETE, onCompleteHandler); 
    //swfLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgressHandler); 
    //loadit.load(load_request); 

    function onCompleteHandler(loadEvent:Event) { 
     addChildAt(loadEvent.currentTarget.content, 1); 
     loadit.load(load_request); 
    } 
+0

なぜあなたの最初の呼び出し/に基づいてショートバージョン/loadit.load(load_request);コメントしましたか?ローダーがデータをロードしないようです。 – zaynyatyi

+0

'onCompleteHandler'イベントの目的は何ですか?どのようにloadメソッドを呼び出す前にdispatche? – Benny

+0

ビデオが正しいレイヤーに充当される前に、ビデオの再生中にコメントアウトしました。だからあなたはそれを聞いても、数秒間それを見ないだろう。 Event.COMPLETEされている可能性があります。私はまずコードのaddChildAt行の後にloadイベントを移動しようとしました。そうです...私はEvent.INITを使用しました。あなたは-1を削除してください。私は自分で解決したにもかかわらず、これは非常に有効な質問だと思う。 –

答えて

0

を私はEvent.INITを使用してそれを解く:

var loadit:Loader = new Loader(); 
    var load_request:URLRequest = new URLRequest("http://www.friedmanllp.com/video/intro.swf"); 
    loadit.contentLoaderInfo.addEventListener(Event.INIT, onCompleteHandler); 
    loadit.load(load_request); 

    function onCompleteHandler(loadEvent:Event) { 
     addChildAt(loadEvent.currentTarget.content, 1); 
    } 
0

カップルの事が間違っている

loadit.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompleteHandler); 
+0

私はそれを試したことがありません。このためにプリロードされていません。ただ走ります。それは重要ですか? –

3

...これを試してみてください。

まず、決して尋ねたことがないため、ローダーはロードされません。ロードメソッドの呼び出しはコメントアウトされています。

また、crooksy88を聞いてください。完了イベントのcontentLoaderInfoプロパティをリッスンする必要があります。 Loaderインスタンスをリッスンしても、探しているイベントは送出されません。

警告も同様に、loadit変数がガベージコレクトされていないことを確認してください!投稿したコードが関数呼び出し内で実行されている場合は、Loaderインスタンスをどこかに(たとえばインスタンス変数に)保持して、メモリ内に確実に存在するようにする必要があります。

コードは次のようなものになります。

var load_request:URLRequest = new URLRequest("http://www.mydomain.com/mySubFolder/myExternal.swf"); 
var loadit:Loader = new Loader(); 
loadit.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgressHandler); 
loadit.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompleteHandler); 
loadit.load(load_request); 

function onProgressHandler(event:ProgressEvent):void 
{ 
    trace("onProgressHandler(event)"); 
} 

function onCompleteHandler(event:Event):void 
{ 
    trace("onCompleteHandler(event)"); 
    addChildAt(loadit, 1); 
} 
+0

冗長な応答をありがとう。私はEvent.COMPLETEの代わりにEvent.INITを使用して解決しました。 –

0

Fingers

var loadIt:Loader = new Loader(); 
on(loadIt.contentLoaderInfo).complete += function (e:Event) { 
    addChildAt(e.currentTarget.content, 1); 
} 
loadIt.load(new URLRequest("http://www.friedmanllp.com/video/intro.swf"));