で、今回はムービークリップの色の変更をさせようと思い、ColorTransformクラスについて探している中で、昔懐かし(?)Colorクラスを発見!
ActionScript 3.0 コンポーネントリファレンスガイド:Color
と思ってよく読んだら、「Color クラスは、Flash Player の ColorTransform クラスを拡張し、明度およびティントを制御する機能を追加します。」とのこと。ああ、以前のColorクラスとは違って、ColorTransformクラスの拡張なのね。でも、明度やティントの制御だとか、「2 つの ColorTransform オブジェクトまたは 2 つのカラー値を補間するための静的メソッドも存在します」だとか、割とよさげなこと書いてあるから、使ってみようかな。
・・・と、思ってみたものの、サンプルコードが見あたらず。ネット探しゃあ出てくるだろうと思って「AS3 Colorクラス interpolateTransform」などのキーワードでググってみるも、出てくるのはAdobeのヘルプページくらい。
むむ。ぜ、全然わからん・・・。interpolateTransform()メソッドの説明には、「ColorTransform オブジェクトから別のオブジェクトにスムーズにブレンドします。 」とか書いてあるから、例えばある色からある色に変化させるのに便利なんだろうけど、色を適用させるオブジェクトを指定するパラメータだとか、ブレンドにかかる時間を指定するパラメータも無いし、どないすんねん!!
闇雲に試してみた挙げ句、やっとこ正しい使い方(?)になったっぽいのが下記のスクリプト。
//Colorクラスのインポート
import fl.motion.Color;
//開始色(赤)のColorTransformオブジェクトを生成
var cTrans1:ColorTransform = new ColorTransform(1,0,0,1,0,0,0,0);
//終了色(青)のColorTransformオブジェクトを生成
var cTrans2:ColorTransform = new ColorTransform(0,0,1,1,0,0,0,0);
//開始色と終了色の間の任意の位置の色データを保持したColorTransformオブジェクトを生成
var cTrans3:ColorTransform = Color.interpolateTransform(cTrans1,cTrans2,0.5);
//cTrans3をtarget_mcに適用
target_mc.transform.colorTransform = cTrans3;
interpolateTransform()メソッドの「progress」パラメータは、開始色の位置を0、終了色の位置を1とした時、最終的に生成する色(上の場合cTrans3)の位置をどこにするか、ということを指定するためのパラメータなのね。上記では0.5にしたから、開始色と終了色のちょうど中間。例えば0.1とかだったらより開始色に近い色になるし、0.9とかだったらより終了色に近い色になる、ってわけか。
とりあえず忘れないようにメモ。
0 件のコメント:
コメントを投稿