hideito on 11月 6th, 2008

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:
  1. public function init():void{
  2. this.addEventListener(Event.CLOSING, onClosing);
  3. ・・・   
  4. }
  5.  
  6. public function onClosing(evt:Event):void{
  7. //イベントキャンセル
  8. evt.preventDefault();
  9. previewImage.addEventListener(Event.COMPLETE, onClosingLoaded);
  10. previewImage.htmlText = "closing...";
  11. this.removeEventListener(Event.CLOSING, onClosing);
  12. }
  13.  
  14. private function onClosingLoaded(evt:Event):void{
  15. previewImage.removeEventListener(Event.COMPLETE, onClosingLoaded);
  16. this.close();   
  17. }

  • Share/Bookmark

Tags:

Leave a Reply