- ベストアンサー
Scriptで色と透明度を変化させるには?。
ある矩形をフレーム上に配置し、モーショントゥイーンを使って透明度と色の変化をつけようとしましたが、透明度は出来ても色の変化が出来ません。 そこで、Scriptを利用してと思い、下記のScriptを記述しました。 onClipEvent(load) { var my_color:Color = new Color(aa); var STform:Object = new Object(); STform.ra = 255; STform.rb = 154; STform.ga = 50 STform.gb = 128; STform.ba = 50; STform.bb = 106; STform.aa = 50; STform.ab = 0; my_color.setTransform(STform) ; } onClipEvent(enterFrame) { this._alpha += 1 ; if(STform.rb < 300) { STform.rb += 1; } if(STform.gb < 145) { STform.gb += 1; } if(STform.bb > 80) { STform.bb -= 1; } my_color.setTransform(STform) ; } 各値はデタラメです。(色と透明度の変化だけを確認したかったので。) 結果は、透明度(Alpha値)は正しく変化しましたが、色が 変わりません。どこに問題があるのでしょうか?。 どうぞ宜しく御願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
Color.setTransform は、ムービークリップのカラー効果の「詳細」( MX では「高度な設定」)と同様の機能です。ActionScript でなくてもモーショントゥイーンと「詳細」を利用して、色とアルファが同時に変化するアニメを作ることはできます。 ただし、思い通りの色を作るのはなかなか難しく、「詳細」の設定パネルでスライダを調節しながらやっても、全く変化していないように見えることはよくあります。 setTransform および「詳細」では、元の色のRGB値と変換用のパラメータを元に計算が行われ、新しいRGB値が決まります。 ra のように”a”で終わる数値は元の値をどのくらいにするかの割合で、値の範囲は -100 ~ 100 です。ご質問文のスクリプトでは ra に 255 と範囲外の値を渡しているため、変換が失敗しているのではないでしょうか。 このあたりの動作原理や詳しい計算式は以前回答したことがありますので、よろしければご参照ください。 ・setTransform()で設定した色をgetRGB()で取得するのは無理でしょうか http://okweb.jp/kotaeru.php3?q=784847 setTransform は色調補正のような意味が強く、ムービークリップで使用されている全ての色に影響を及ぼします。 例えば、黒で輪郭線を描いた絵に setTransform をかけると、輪郭線の色が純粋な黒ではなく色合いが変わったり、あるいは全く違う色になってしまうことがあります。 Flash MX には、Color オブジェクトを使って車のボディカラーを変化させるというサンプルが付いていました。 RGBそれぞれを調節して色を作れるようになっているのですが、車の輪郭線やハイライトの色は全く変化しないにもかかわらず、陰影はボディカラーとともに微妙に変化しているのが不思議で、どうやっているのかと思ったものですが、そのカラクリのタネはといいますと。 車の大まかな形を、単色で線のないムービークリップで作り、このムービークリップの色を Color.setRGB で変化させます。 車の細部や陰影は、モノトーンで半透明・透過情報を加えたPNG画像として別に作っておき、ムービークリップの上に重ねてあっただけでした。PNG 画像側のアルファ値が 100 %ならムービークリップの色が透けないため、変化しません。色が変化すると困る輪郭線やハイライトはアルファが100%になっています。半透明の時は、下にあるムービークリップの色とのアルファブレンドが行われるので、ボディの色の影響を受ける陰影はアルファを利用したグラデーションで付けられていたというわけです。 とても単純な、それでいて賢い方法で、なるほどと思ったサンプルでした。 setRGB は setTransform に比べて扱いが簡単で、処理も軽いです。 無理に setTransform を使わずとも、こんな方法もあるということで、ご参考までに。
その他の回答 (1)
- mat-21
- ベストアンサー率56% (91/162)
回答ではありませんが、モーショントゥイーンでできますよ。キーフレームからキーフレームにモーショントゥイーン設定し、設定変更したいキーフレーム上のオブジェクトを選択してプロパティの「カラー」の「高度な設定」でできます。数値的にややこしいので、やり方としては、「高度な設定」ではなく、「着色」で一旦色を設定し、次に「高度な設定」を選択し、「設定」ボタンをクリックします。すると、「着色」の時の色がそのまま設定されていますので、あとは「アルファ」の数値を設定すれば、色も設定でき、アルファ値も同時に設定できます。 ちなみにこの設定はFlashMXを参考に説明しています。