Macromedia Flash非公式テクニカルノート Color.setRGBの着色をクリアする
Platform: All 1. Color.setRGBメソッドでMovieClipを着色する // MovieClip: クリックしたとき赤く着色するインスタンス [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の着色をクリアする 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. カラー設定を初期の状態に戻す そのObjectオブジェクトに格納されている6つのプロパティは、'Color.setTransform'の引数に指定するObjectと同じです。各プロパティに、現在のカラー設定の数値が与えられています。ですから、元の状態に戻すには、その取得したObjectオブジェクトをそのまま'Color.setTransform'メソッドの引数に渡せば済みます。各プロパティの値を、ひとつひとつ取出して調べる必要はありません。取得したObjectオブジェクトを、ただ変数に格納してとっておけばよいのです。 以下のスクリプトをMovieClipアクションに設定すると、インスタンスをクリックしたときに赤く着色し、マウスボタンを放すと元の状態に戻します。 // MovieClip: クリックすると赤く着色しマウスボタンを放すと元に戻す [1] 着色を実行する前に、'Color.getTransform'メソッドでカラー設定を変数に取得しておきます。MovieClipインスタンスがフレームに登場した最初のカラー設定を元の状態とする場合には、'onClipEvent (load)'イベントハンドラアクションの中で値を一度だけ取得するのでもよいでしょう。 [2] 変数に取得しておいたObjectオブジェクトを引数として、'Color.setTransform'メソッドを実行します。Objectオブジェクトのプロパティ値は、とくに取出す必要がありません。 _____ 作成者: 野中文雄 Copyright © 2001-2006 Fumio Nonaka. All rights reserved. |
|||