2010年04月12日

表示リスト

表示リスト


AS3.0の解説を読んでいると、「表示リスト」「表示オブジェクト」「表示オブジェクトコンテナ」という言葉が出てくる。

表示オブジェクト
表示オブジェクトとは、どうやら目視できるインスタンスのことらしい。
例えば、音は見えないけど、映像は見ることが出来る。
なのでサウンドオブジェクトは表示オブジェクトではないが、ビデオオブジェクトは表示オブジェクトになる。

表示オブジェクトコンテナ
そして表示オブジェクトの中に複数の表示オブジェクトを作ることができる表示オブジェクトを「表示オブジェクトコンテナ」という。
つまり、ムービークリップの中には、ボタンやテキストや別のムービークリップを作成することができる。
このような表示オブジェクトを表示オブジェクトコンテナという。
container = 入れ物という意味なので、表示オブジェクトを入れる透明な箱と考えてもいいかも。
実際、MovieClipは画像などの表示オブジェクトがないと、addChild()で配置しても何も表示されないのだから。

表示リスト
表示リストだが、これがイマイチ掴めないんだなぁ。。。
ver mc:MovieClip = new MovieClip();

これでインスタンスを生成したけど、このmcを表示しようとおもったら、
addChild(mc);

これを書かないといけないんだけど、これは「表示リストに追加」したことになるらしい。
このmcに、ボタンインスタンス(btn)を配置するには、
mc.addChild(btn);

ということは、ステージ・スプライト・ムービークリップに配置する表示オブジェクトのリストってことなのかな。


<ぼやき>
というか、スプライトもよくわからないんだけどね。
ムービークリップのスーパークラスで、タイムラインが無いムービークリップのようなものらしいが、どんな場面で使うのかよくわからない。
今までだと、描画スクリプトやサウンドなどは、新規にムービークリップを作成してそれに含めたけど、これからはスプライトに書けってことなのだろうか。
単にグラフィックを配置するだけならタイムラインは必要ないものねぇ。。。
静止画じゃなくて、波打つサインカーブとか描きたい場合はどうなんだろう?
描画メソッドもGraphicsクラスに移っちゃって、わからん事だらけだ・・・
< /ぼやき>

スプライトは追々勉強するとして、次にどんなオブジェクトが表示オブジェクトとされるのかを見てみる。
「表示オブジェクト」になりうるクラスがflash.displayパッケージにまとめられている。
※テキストとビデオは含まれていない。下記の補足参照。

flash.displayパッケージ

意外なのはLoaderクラスが入っていることだけど、読み込まれた画像などの表示オブジェクトはLoaderクラスの子として扱うからかな。

さて、注目すべきはこの中の「DisplayObject」と「DisplayObjectContainer」

DisplayObjectContainer
このページのサブクラスが、表示オブジェクトコンテナとなるクラス。

DisplayObject
このページのサブクラスが、表示リストに追加できる表示オブジェクトとなるクラス。

ということで、表示リストの構造をまとめてみる。
displayObj.bmp


こうやって書いてみると、表示リストってのはライブラリのようなモノなのかな?と思う。
表示オブジェクトが、どこに配置されているかを管理するためのものといったところか。

【補足】
テキストやビデオはFlash.displayパッケージに含まれていないのだが”テキストはテキスト用のパッケージに、ビデオはマルチメディア用のパッケージに入れたから”というのが含まれていない理由だと思う。
でも、TextFieldクラスやVideoクラスは、DisplayObjectクラスを継承しているので表示オブジェクトとなる。

posted by K at 10:10| Comment(2) | AS3.0の構造 | このブログの読者になる | 更新情報をチェックする

2010年04月11日

パッケージとトップレベルとimport

パッケージ


パッケージとは、クラスが入ったフォルダのようなもの。
一つのパッケージに同系統のクラスが入ってる。

トップレベル

トップレベルには、使用頻度が高い関数とクラスが入っている。
この関数のことをトップレベル関数といい、クラスのことをコアクラスという。
詳細はAS3.0コンポーネントリファレンス-トップレベル参照

トップレベルと他の違いについて
コアクラスのNumberと、そうでないMovieClipクラスを比較してみる。
例えばNumberクラスだと
var num:Number = new Number(10);
のほかに、
var num:Number = 10;
といった風にも書ける。
しかし、MovieClipの場合はnew演算子を使って書かないといけない。
var mc:MovieClip = new MovieClip();

このように、トップレベルのクラスや関数は、Flashに予め読み込まれているので、インスタンスの生成をしなくても使えるようになっている。
また、これ以外のパッケージを使用する場合はimportでパッケージを読み込む必要がある。


import


トップレベル以外のパッケージを使用する場合は、importを使って読み込む。
ただし、フレームアクションとして記述する場合はFlashが自動的に読み込むようになっているので、書かなくてもエラーにならない。
ワイルドカード(*)が使用できる。

//ボタンコンポーネントを使う場合
import fl.contorols.Button;
 
//コントロールパッケージのクラスを使う場合
import fl.contorols.*;


フレームアクションでimportが必要なパッケージ
すべてのパッケージ
このページで、fl.から始まるパッケージはimportが必要。

【まとめ】
トップレベル → インスタンスを生成しなくてもそのまま使える
fl.〜 → コンポーネントをまとめたパッケージ群。importで読み込んでからインスタンスを生成
flash.〜 → 外部ASの場合はimportが必要。タイムラインで使う場合はimportしなくてよい。
adobe.utils  → Flashオーサリングツールを作成するためのパッケージ。たぶんSWFプレーヤーを作る場合に使うものだと思うので無視でOK。


posted by K at 13:19| Comment(0) | AS3.0の構造 | このブログの読者になる | 更新情報をチェックする