表示の概念
MovieClip・Sprite
Flashはタイムラインベースのアニメーションオーサリングソフトです。タイムラインとは、アニメーションを表現するために、レイヤーとフレームを使用してドキュメントのコンテンツを時間に沿って制御するためのものです。Flashでは単純に時間の長さをフレームに分割しており、fps(Frame Per Second)という単位で表されます。数あるオブジェクトの中でも、タイムラインを扱えるオブジェクトとしてMovieClipは位置づけられていますが、同時に非常に重要な存在であり、MovieClipはFlashそのものであるといっても過言ではないでしょう。
では、Spriteとはなんでしょう?結果的にいってしまえばSpriteは単に、タイムラインのないMovieClipです。もともと、MovieClipクラスはSpriteクラスを継承して拡張されています。MovieClipはフレームの情報やフレームラベルの参照など、タイムラインに関するプロパティやメソッドを扱えますが、Spriteにそのような機能はありません。Spriteを扱うメリットは、タイムラインをもっていないためMovieClipよりも比較的軽く、パフォーマンス的に有利であるということが挙げられます。これらの使い分けは、その場の状況によって判断します。
インスタンスの生成と表示リストへの追加
さて、表示リストやMovieClipについて、おわかりいただけたでしょうか?なにやら難しく感じると思います。それでは実際にMovieClipを生成して表示させてみましょう。まずはこちらからサンプルをダウンロードしてください(5.38 KB)。
まずは、MovieClipを生成します。MovieClipを生成する方法は、前回も紹介しましたが、newキーワードを使用します。
myMc = new MovieClip();
この時点で表示されないことは、解説しました。では、本当に生成されているのでしょうか?確認してみましょう。以下のコードを入力して、プレビューしてみてください。
trace(myMc)
すると、出力パネルに[object MovieClip]と表示されています。このことから、MovieClipが生成されていることがわかります。
addChild(myMc)
表示リストに表示オブジェクトを追加するにはDisplayObjectContainerクラスから継承されたメソッド、addChild()を使用します。このコーディングの場合、this.addChild(myMc)としたことと同じになります。thisとは階層構造を示すオブジェクトを参照するためのキーワードです。逆に、表示リストから削除するにはremoveChild()を使用します。
以上のaddChild()を実行しても何も表示されていないと思います。しかしtrace()によれば確かにMovieClipはステージ上に存在しています。
ここで表示されていないのは、生成したMovieClipは空のため表示リストに追加したとしても、見えないわけです。目に見えるようするにはこの空のMovieClipになにかを追加、または描画する必要があります。ここでは、シェイプを描画してみましょう。ここでは、graphicプロパティのlineStyle()とdrawCilce()を使用します。これらの描画メソッドについては、詳しくは触れませんが、Flash CS3のヘルプに詳しい記述がありますので、そちらをご参照ください。
myMc.graphics.lineStyle(1,0x777777);
myMc.graphics.drawCircle(0,0,10);
するとどうですか?表示されましたが、円が欠けています。これは、MovieClipの基準点が中央で、グローバル座標がxyともに0になっているためです。