サイトトップ

Director Flash 書籍 業務内容 プロフィール

Macromedia Flash非公式テクニカルノート

MovieClip.isPlayingプロパティ

ID: FN1110003 Platform: All Version: CS5/ActionScript 3.0 Runtime: Flash Player 11/AIR 3.0

MovieClipクラス
パッケージ flash.display
継承 MovieClip → Sprite → DisplayObjectContainer → InteractiveObject → DisplayObject → EventDispatcher → Object
isPlayingプロパティ
文法 isPlaying:Boolean
プロパティ値 [読取り専用] 参照するMovieClipインスタンスが再生中であるかどうかを示す。
実装 public function get isPlaying():Boolean

説明
MovieClip.isPlayingプロパティは、参照するMovieClipインスタンスのタイムラインが再生中であればtrue、停止していればfalseになります。読取り専用プロパティですので、設定はできません。再生にはMovieClip.play()、停止するにはMovieClip.stop()などのメソッドを呼出します。

MovieClipインスタンスが再生されているかどうかは、ステージに表示されていれば大抵わかります。つまり、調べなければならないのは、ステージに表示されていないときです(Adobeデベロッパーセンター「ActionScript 3.0におけるパフォーマンス向上のヒント」04「visibleとalphaとremoveChild()」の項参照)。インスタンスをステージから消すときには、原則としてタイムラインの再生を止めましょう。その理由を簡単に補足として述べます。

まず知っておかなければならないのは、「タイムラインからインスタンスがなくなっても、『ガベージコレクション』という仕組みが働くまで、オブジェクトはメモリから除かれない」(「予め配置したインスタンスの存在しないフレームに移動しても参照が消えない」[1]「ガベージコレクションはインスタンスをすぐには消さない」)ということです[*1]

MovieClipインスタンスがメモリから消えないままループ再生でフレームアクションを実行し続けていると、予期しないエラーが起こることもあります(F-site「DisplayObjectインスタンスの削除とガベージコレクション」「表示リストからの削除」の項参照)。そうした問題を避けるには、MovieClipインスタンスのタイムラインは止めておくことが望まれます。また、ステージに表示されていなくても、アニメーションが行われていればCPUを無駄に費やします。

ガベージコレクションはすべての参照が失われたインスタンスをメモリから消します。しかし、Flashではそれだけでなく、「インスタンスが活動していないということも、ガベージコレクションが片づけるときに気づかうようです」(前出「DisplayObjectインスタンスの削除とガベージコレクション」「メモリからの削除」の項)。したがって、ガベージコレクションを速やかに働かせるためにも、もはや要らなくなったインスタンスのフレームは止めておくべきでしょう。

[*1]「ガーベジコレクション」(garbage collection)とは、オブジェクトへの参照を確かめ、すべての参照がなくなるとメモリを自動的に解放する仕組みです。なお、拙著『ActionScript 3.0による三次元表現ガイドブック』Column 01「ガベージコレクションと弱い参照」(PDFプレビュー公開)p.024-025およびF-site「DisplayObjectインスタンスの削除とガベージコレクション」をご参照ください。

参考
[ActionScript 3.0 Reference for the Adobe Flash Platform] > [MovieClip]の「isPlaying property」の項

_____

作成者: 野中文雄
作成日: 2011年10月9日


Copyright © 2001-2011 Fumio Nonaka.  All rights reserved.