サイトトップ

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

Flash ActionScript 3.0 Reference

◎06 幾何

☆06 ★インスタンスに着色したい

解説
ColorTransformクラスを用いると、DisplayObjectインスタンスのカラーを調整することができます。ColorTransformインスタンスは、Transformクラスのプロパティです。

Transformクラスには、DisplayObjectインスタンスの状態を変換する複数のオブジェクトがプロパティとして備えられています。Transformクラスは、いわばそれらの変換オプジェクトを管理するものです。そして、Transformオブジェクトは、DisplayObject.transformプロパティから取得します。

したがって、インスタンスのカラーを調整するColorTransformインスタンスには、つぎのようにアクセスします。

インスタンス.transform.colorTransform
DisplayObjectクラス
パッケージ flash.display
継承 DisplayObject → EventDispatcher → Object
transformプロパティ ASタイプ P
ランタイムバージョン AIR 1.0/Flash Player 9
文法 transform:Transform
意味 インスタンスのもつTransformオブジェクトの参照を示す。
プロパティ値 インスタンスに対する設定用のオブジェクトが納められたTransformオブジェクトの参照。Transformオブジェクトのプロパティとして設定されたそれらのオブジェクトを操作することにより、インスタンスのカラー調整や座標空間における変換が行える。

Transformクラス
パッケージ flash.geom
継承 Transform → Object
colorTransformプロパティ ASタイプ P
ランタイムバージョン AIR 1.0/Flash Player 9
文法 colorTransform:ColorTransform
意味 インスタンスのもつColorTransformオブジェクトの参照を示す。
プロパティ値 インスタンスのカラーを調整するColorTransformオブジェクトの参照。ColorTransformインスタンスのプロパティを操作することにより、インスタンスのカラー設定が変えられる。

ColorTransformクラス
パッケージ flash.geom
継承 ColorTransform → Object
colorプロパティ ASタイプ P
ランタイムバージョン AIR 1.0/Flash Player 9
文法 color:uint
意味 ColorTransformオブジェクトのRGBカラー値。
プロパティ値 ColorTransformオブジェクトのRGBカラー値を示す0以上の整数値。設定は16進数形式の0x000000から0xFFFFFFまでの値で指定する。

ColorTransform.colorプロパティに16進数形式のカラー値を指定すると、インスタンスに着色することができます。たとえば、SpriteインスタンスmySpriteに青く(0x0000FF)着色するには、つぎのようなスクリプトを記述します。

var myColorTransform:ColorTransform = mySprite.transform.colorTransform;
myColorTransform.color = 0x0000FF;
mySprite.transform.colorTransform = myColorTransform;

※Transform.colorTransformプロパティを参照して直接操作はできない
Transform.colorTransformプロパティの参照に対して、直接ColorTransform.colorなどのプロパティ(あるいはメソッド)を操作することはできません。つまり、以下のようなステートメントの記述は無効です。上記スクプトのように、Transform.colorTransformプロパティから一旦ColorTransformオブジェクトを取得したうえで処理を行い、改めてTransform.colorTransformプロパティに代入する必要があります。

mySprite.transform.colorTransform.color = 0x0000FF;

記述例
以下のスクリプト06-06-01は、タイムラインに円形のSpriteインスタンスを動的に配置し、インスタンスがクリックされる(InteractiveObject.clickイベントの)たびにその色をランダムに変えます(図06-06-01)。InteractiveObject.clickイベント(定数MouseEvent.CLICK)のリスナー関数xChangeColor()では、ランダムなカラー値を取得したうえで、その値をColorTransform.colorプロパティにより円形のSpriteインスタンスに設定しています。

スクリプト06-06-01■動的に配置したインスタンスをクリックするたびランダムに着色する

// フレームアクション
var mySprite:Sprite = new Sprite();
var myGraphics:Graphics = mySprite.graphics;
var myTransform:Transform = mySprite.transform;
var myColorTransform:ColorTransform = myTransform.colorTransform;
addChild(mySprite);
myGraphics.beginFill(0);
myGraphics.drawCircle(50, 50, 50);
myGraphics.endFill();
mySprite.addEventListener(MouseEvent.CLICK, xChangeColor);
function xChangeColor(eventObject:MouseEvent):void {
  myColorTransform.color = Math.floor(Math.random() * 0xFFFFFF);
  myTransform.colorTransform = myColorTransform;
}


図06-06-01■インスタンスをクリックするたびに色がランダムに変わる【06_06_ColorTransform_001.png】

なお、動的に配置したSpriteインスタンスに対する円の描画、あるいはランダムな整数値の取得については、前述「円や楕円を描きたい/描画を消去したい」および「ランダムな整数を求めたい」をご参照ください。

→関連項目
円や楕円を描きたい/描画を消去したい」「ランダムな整数を求めたい


作成者: 野中文雄
ドラフト作成: 2009年6月9日


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