- ベストアンサー
Flashで、スクリプトによるカラーの変化を表現
Flashで、setRGBを使って、 あるカラーから、あるカラーへ徐々に色を変化させることは可能でしょうか。 例えば、紫から緑や、紫から赤など、 一つの色からの変化を何通りも実現できれば最高です。 それをスクリプトで自由に表現できればと思っています。 色が徐々に変わるようにしたいのですが、それは可能でしょうか。 宜しくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
Color オブジェクトの setRGB メソッドでは、線やグラデーションのかかった塗りなども、全て指定の色で塗りつぶされてしまいます。 色調を変えたい場合は、setRGB ではなく setTransform メソッドを使います。 setTransform で必要とされるパラメータは、多くて複雑です。ですから、Object 型という汎用オブジェクトを用意し、このオブジェクトにパラメータを設定して引数として渡すように設計されています。 詳しくは省略しますが、ra のように2文字目が”a”で終わるパラメータは、「高度な設定」のパネルで左側にある「%」の設定に、rb のように”b”で終わるパラメータは、右側の数字を入れる部分(オフセット)に対応しています。 1つの色から何通りもの変化を、とのことですので、このようにしてみてはいかがでしょう。 ムービークリップは、できればモノトーンで作った方が分かりやすいです。 例えば、白い四角形のムービークリップがあるとします。 これのインスタンスをステージに置いて、「カラー」→「高度な設定」のパネルを見てみて下さい。RGB全ての要素が100%に、オフセットは0 になっていると思います。 ここで、仮にRを100%に、GとBを0%にすると、ムービークリップの色が赤に変わります。 右側のオフセットをいじるとややこしいので、左側にあるRGBの割合を操作することで、色を変化させることにします。 ActionScript では、パラメータを設定することで色を変えます。そのパラメータを一定の数字ではなく、フレームごとに変わる変数にしておけば、フレームごとに色が変化するアニメになります。 とりあえず、ステージに、 clip という白い四角形のムービークリップがあるとします。 clip の色を赤から紫へ変えるスクリプトは、次のようになるかと思います。 //初期設定 onClipEvent( load ) { var color_ctrl , param_obj , r , g , b; //カラー操作オブジェクトと、パラメータ用オブジェクトの生成 color_ctrl = new Color( this ); param_obj = new Object(); //RGBの割合を管理する変数の初期化:最初は赤にする r = 100; g = 0; b = 0; //カラーのパラメータを設定 param_obj = { ra:r , rb:"0" , ga:g , gb:"0" , ba:b , bb:"0", aa:"100" , ab:"0" }; //カラー変更処理 color_ctrl.setTransform( param_obj ); } //赤→紫のカラーアニメ onClipEvent( enterFrame ) { //青の割合をアップ:100%になったらアニメ終了 b += 5; if ( b > 100 ) { b = 100; } //パラメータを更新 param_obj.ba = b; //カラー変更処理 color_ctrl.setTransform( param_obj ); } (↑このスクリプトをコピーして使う場合は、行頭の全角スペースを、全て半角のスペースかタブに置き換えて下さい。このまま使うと、シンタックスエラーになります) enterFrame イベントは、ムービークリップがステージに存在している間、常に発生しています。この点を利用して、青の要素を1フレームごとに変更します。 今回は青の要素だけが変化するので、setTransform に渡される param_obj は param_obj.ba の部分のみを変更していますが、r と g を変更する場合は、param_obj.ra と param_obj.ga に r と g の内容を代入して、変更を反映させます。 あとは色の調整ですので、いろいろ試してみて下さい。 ・・・ところで、先ごろのカテゴリーの整理で、「プログラミング」のところに「Flash」というカテゴリーが作られました。 最近、カテゴリー違いで質問が削除されたという話を、よく耳にします。「グラフィックソフト」でも間違いではないとは思うのですが、ActionScript の質問は「Flash」のカテゴリーを利用した方が、無難な気がします。 長くなってしまって、すみませんでした。
その他の回答 (2)
こんにちは。 う~ん、複数のオブジェクトで制御するので、ここで解説するのは難しいのですが..... 使用するのはsetTransformです。 カラーオブジェクトのメソッドの一種ですが、 これでRGB値を個別に変化できます。 RGBそれぞれのパーセント、オフセットを変数とし、 その変数を乱数にしてしまうわけです。 多分、どこかに解説サイトがあるんじゃないかとは思いますが..... ちなみに僕が参考にしているのは、「FLASH5上級サンプル100」という本です。 ソースは置いてないですが、この本に収録されたFlashはここで見ることが出来ます。↓
こんばんは。 5以降であれば、RGBとアルファ制御可能です。 乱数を利用すれば、色んな色に変化させることも出来るでしょう。
お礼
ありがとうございます。 出来れば、具体的なスクリプトを一つ提示してくれませんでしょうか。 イメージしようにも知識が乏しいために、どのようにスクリプトを書けばいいのか想像できなくて困っております。 どうぞ宜しくお願いします。