サイトトップ

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

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

Color.setRGBの着色をクリアする

ID: FN0307005 Product: Flash

Platform: All
Version: MX and Above

1. Color.setRGBメソッドでMovieClipを着色する
'Color.setRGB'メソッドを使うと、MovieClipに着色することができます。たとえば以下のMovieClipアクションは、インスタンスをクリックすると赤く(#FF0000)着色します。

// MovieClip: クリックしたとき赤く着色するインスタンス
// MovieClipアクション
on (press) {   // [1] マウスボタンを押したときに処理を実行
   my_color = new Color(this);   // [2] Colorオブジェクトのインスタンス作成
   my_color.setRGB(0xFF0000);   // [3] 'Color.setRGB'メソッドで赤く(#FF0000)着色
}

[1] 'on (press)'ハンドラの処理は、インスタンスをクリックした瞬間に実行されます。

[2] MovieClipに対するカラーの設定には、Colorオブジェクトを使用します。そのためには、まずカラー設定の対象となるMovieClipのターゲットパスを引数にして、Colorオブジェクトのインスタンスを生成する必要があります。オブジェクトインスタンスの生成については、「LoadVarsオブジェクトを使った外部テキストファイルの読込み」の「1. LoadVarsインスタンスの生成」をご参照ください。作成したColorオブジェクトのインスタンスは、変数my_color(Colorオブジェクトの変数名には、接尾辞"_color"をつけると便利です。接尾辞については「コードヒントの活用」をご覧ください)に格納しています。

[3] 変数my_colorに格納したColorオブジェクトインスタンスをターゲットとして、'Color.setRGB'メソッドを実行します。引数には、16進数のカラー値を指定します。最初の0xは16進数を意味します。続く6桁の値がRGBカラーの指定です。FF0000は、R値255(GおよびBは0)の赤になります。このステートメントの実行により、MovieClipは赤く着色されます。

2. MovieClipの着色をクリアする
'Color.setRGB'メソッドで着色したカラーをクリアする直接的なメソッドはありません。着色前に設定値を調べようとして'Color.getRGB'メソッドの値を取得すると、0が返されます。'Color.setRGB'メソッドで0を引数に指定すれば、MovieClipは黒く(#000000)着色されてしまいます。

MovieClipの着色をクリアするには、'Color.setTransform'メソッドを使います。引数はObjectオブジェクトで指定し、6つのプロパティが設定できます。Objectオブジェクトは、プロパティ名とその値のペアをコロン(:)で結び、複数のプロパティはカンマ(,)で区切ります。そして、その全体を中括弧('{}')で囲みます。着色も含めたカラー設定を何もしていないデフォルト値のObject指定は、つぎのようになります。

{ra:100, ga:100, ba:100, aa:100, rb:0, gb:0, bb:0, ab:0}

プロパティ名は、アルファベット2文字で構成されています。最初の文字rgbaが、それぞれRBGおよびアルファを意味します。2文字目は、aが各成分のパーセント、bはオフセットです(「ActionScript辞書」の'Color.setTransform'の項参照)。これらは、MovieClipインスタンスに設定できる[カラー]スタイルの[高度な設定]に対応しています。


[高度な設定]で表示される[拡張効果]ダイアログボックスの設定項目と各プロパティとの対応

Objectオブジェクトの中に指定するプロパティの順番は、どのような順序でも構いません。また、設定を変更する必要のないプロパティは、省略することができます。ですから、アルファの設定をしていなかったMovieClipの着色をクリアするには、アルファ指定のプロパティaaとabを省略して'Color.setTransform'メソッドをつぎのように指定します。なお、Colorオブジェクトインスタンスは、変数my_colorに格納されているものとします。

my_color.setTransform({ra:100, ga:100, ba:100, rb:0, gb:0, bb:0});

3. カラー設定を初期の状態に戻す
予めカラー設定(たとえば、アルファの指定)がされている場合、着色後に元の状態に戻すには、元の設定を着色前に取得しておく必要があります。カラー設定を取得するのは、'Color.getTransform'メソッドです。メソッドを実行すると、Objectオブジェクトが返されます。

そのObjectオブジェクトに格納されている6つのプロパティは、'Color.setTransform'の引数に指定するObjectと同じです。各プロパティに、現在のカラー設定の数値が与えられています。ですから、元の状態に戻すには、その取得したObjectオブジェクトをそのまま'Color.setTransform'メソッドの引数に渡せば済みます。各プロパティの値を、ひとつひとつ取出して調べる必要はありません。取得したObjectオブジェクトを、ただ変数に格納してとっておけばよいのです。

以下のスクリプトをMovieClipアクションに設定すると、インスタンスをクリックしたときに赤く着色し、マウスボタンを放すと元の状態に戻します。

// MovieClip: クリックすると赤く着色しマウスボタンを放すと元に戻す
// MovieClipアクション
on (press) {
  my_color = new Color(this);
   myTransform = my_color.getTransform();   // [1] MovieClipのカラー設定を変数に取得
  my_color.setRGB(0xFF0000);
}
on (release) {
   my_color.setTransform(myTransform);   // [2] 変数に取得しておいたカラー設定に戻す
}

[1] 着色を実行する前に、'Color.getTransform'メソッドでカラー設定を変数に取得しておきます。MovieClipインスタンスがフレームに登場した最初のカラー設定を元の状態とする場合には、'onClipEvent (load)'イベントハンドラアクションの中で値を一度だけ取得するのでもよいでしょう。

[2] 変数に取得しておいたObjectオブジェクトを引数として、'Color.setTransform'メソッドを実行します。Objectオブジェクトのプロパティ値は、とくに取出す必要がありません。

_____

作成者: 野中文雄
作成日: 2003年7月21日


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