表示オブジェクト(DisplayObject)のクラス構造

DisplayObjectのクラス継承関係

Actionscriptでは組み込み型以外はすべてObjectクラスを継承しています。グラフィクスを描くためのSpriteやMovieClipクラスや画像を表示するためのBitmapクラスなど、基本的に表示するものは全てDisplayObjectを継承しています。




Object
EventDispatcher
DisplayObject
InteractiveObject
DisplayObjectContainer
Sprite Stage
 
MovieClip  


DisplayObject
Bitmap StaticText
DisplayObject
InteractiveObject
TextField SimpleButton

SpriteやMovieClipでグラフィクスを描くために呼び出すメンバについて、基底クラスから順に確認してみたいと思います。

DisplayObjectのメンバ

DisplayObjectでは座標やサイズなど"表示する"ための根本的なプロパティが用意されています。
DisplayObjectを直接インスタンス化することはできないので、派生クラスであるSpriteクラスなどをインスタンス化して利用します。

var obj:Sprite = new Sprite();
x,y:int 座標
obj.x = 100;
obj.y = 100;
width,height:int サイズ

サイズの値を変えるとスケールも変わります。

obj.width = 100;
obj.height = 100;
scaleX,scaleY:Number スケール
obj.scaleX = 0.7;
obj.scaleY = 0.7;
alpha:Number α値

0.0〜1.0で指定します。

obj.alpha = 0.7;
rotation:Number 回転

°で指定します

obj.rotation = 30;
mouseX,mouseY:int マウス座標

読み取り専用

parent:DisplayObject

親DisplayObjectです。戻り値はDisplayObjectContainerクラスです。これで自分がどのDisplayObjectに含まれているのか確認することができます。

trace(obj.parent)
getBounds(target:DisplayObject):Rectangle

target座標を基準としてこのDisplayObjectの境界である矩形を返します。

trace(obj.getBounds(obj))
trace(obj.getBounds(obj.parent))
DisplayObjectが送出するイベント

利用できるイベントは大きく分けて次の2つです。
DisplayObjectが表示リストに追加・削除された場合のイベント:

  • added,addedToStage
  • removed,removedFromStage

フレーム開始終了時のイベント:

  • enterFrame,exitFrame

InteractiveDisplayObject

DisplayObjectに対してマウスなどインタタラクティブな機能を追加したクラスです。例えば、ダブルクリックやマウスイベントを受け付けるかどうかを設定するdoubleClickEnabledやmouseEnabledプロパティなどが追加されています。DisplayObjectに加えて、フォーカス、キー、マウス、ドラッグジェスチャなど数多くのイベントが基本的にはここで追加されています。
focusOut,focusIn,keyDown, keyUp, mouseDown, mouseOut,mouseWheel...など。

DisplayObjectContainer

DisplayObjectは一つのレイヤーで、その中にもいくつもレイヤーを重ねることができます。DisplayObjectをリストとして持つクラスとして定義したものがDisplayObjectContainerになります。DisplayObject自身がDisplayObjectをいくつも持つことができるように自分自身の派生クラスとして定義されています。

DisplayObjectContainerのメンバ

階層構造に関するメンバがここで定義されています。
追加、削除、取得、入れ替えなどのメソッドそれぞれに対してインスタンスかインデックスを指定できるものが提供されています。

DisplayObjectをリストに追加する
  • addChild(child:DisplayObject):DisplayObject
  • addChildAt(child:DisplayObject, index:int):DisplayObject
DisplayObjectをリストから削除する
  • removeChild(child:DisplayObject):DisplayObject
  • removeChildAt(index:int):DisplayObject
DisplayObjectをリストから取得する
リストの要素の入れ替え
  • swapChildren(child1:DisplayObject, child2:DisplayObject):void
  • swapChildrenAt(index1:int, index2:int):void

Spriteクラス

ここで初めてグラフィクスを描くための機能が追加されます。

  • buttonMode : Boolean

trueの場合はこのSpriteをボタンにすることができます。

  • graphics:Graphics

グラフィクスのためのプロパティです。graphicsプロパティを通して丸や直線などを描画することができます。

  • startDrag(lockCenter:Boolean = false, bounds:Rectangle = null):void
  • stopDrag():void

このSpriteをドラッグできるようにするためのメソッドです。stopDragとセットで使います。

MovieClipクラス

MovieClipはSpriteにさらにタイムラインを追加したものです。動画の再生に関するメンバ、ヘッドの制御に関わるメンバがここで追加されています。
再生・停止

  • play():void
  • stop():void

指定位置で再生・停止

  • gotoAndPlay(frame:Object, scene:String = null):void
  • gotoAndStop(frame:Object, scene:String = null):void

再生ヘッドの移動

  • nextFrame():void
  • nextScene():void
  • prevFrame():void
  • prevScene():void

Stageクラス

Stageクラスはメインの描画領域全体(ベースレイヤー)を表しており、Spriteと同様にDisplayObjectContainerを継承しています。アプリケーション内に一つだけ存在するので新たに作成することはできません。ブラウザでのalign指定やFlashPlayerで再生した際の設定項目などが主なメンバとなっています。