AIRのHTMLコンポーネントで、MP3やFLV再生を含んだFlashサイトを表示した場合、
再生中に直接HTMLコンポーネントをcloseメソッドで閉じた場合、表示上はHTMLコンポーネントが消えているのに、内部的に残っているようで再生が停止しない。
MP3のような音声再生の場合、HTMLコンポーネントが閉じているのに再生が続いているという現象が起こる。AIRアプリを終了すれば停止する。
また、ローカルのFLVやMP3を含んだページをHTMLコンポーネントで表示してそのままHTMLコンポーネントをcloseすると、AIRアプリを終了するまでローカルファイルをロックするような動きを見せる。
以下の処理を入れたら改善された。
<改善策>
以下、閉じるボタン付きWindowコンポーネントでHTMLコンポーネントを使用した場合
①WindowコンポーネントのclosingイベントをaddEventListener
②closingイベントハンドラメソッド内でイベントキャンセル&HTMLコンポーネントhtmlTextに適当な文字列をセット
③HTMLコンポーネントのcompleteイベントハンドラメソッドでclosingイベントをremoveEventListenerして、Windowコンポーネントcloseメソッド実行
<例>
以下、Windowコンポーネント内のコード
HTMLコンポーネント:previewImage
Actionscript:
-
public function init():void{
-
this.addEventListener(Event.CLOSING, onClosing);
-
・・・
-
}
-
-
public function onClosing(evt:Event):void{
-
//イベントキャンセル
-
evt.preventDefault();
-
previewImage.addEventListener(Event.COMPLETE, onClosingLoaded);
-
previewImage.htmlText = "closing...";
-
this.removeEventListener(Event.CLOSING, onClosing);
-
}
-
-
private function onClosingLoaded(evt:Event):void{
-
previewImage.removeEventListener(Event.COMPLETE, onClosingLoaded);
-
this.close();
-
}
Tags: AIR

http://www.chizuyado.com
Leave a Reply