Actionscript 3.0 では、ColorクラスにinterpolateColorというメソッドがあります。私には奇妙に思えますが、このメソッドは Color の 2 つのインスタンスではなく、色に対して 2 つの符号なし整数を取ります。さらに、結果の色の符号なし整数を返します。とにかく、Color を符号なし整数に変換したり、Color の 2 つのインスタンス間を単純に補間したりするための API は見当たりません。コードを記述せずに Color の 2 つのインスタンス間を補間して、それらを符号なし整数に自分で変換することは可能ですか?
4 に答える
少し遅いかもしれませんが、たまたまこのページにたどり着いたのですが、画像のサイズを変更するときに補間色に関する同様の問題に直面していました。 . それを見てみましょうhttp://www.yoambulante.com/en/labs/interpolation.php乾杯!
ちょっと不便ですが、数値に変換するしかないようです。これは、このコードを使用した投稿です。
public static function interpolateColor(fromColor:uint, toColor:uint, progress:Number):uint
{
var q:Number = 1-progress;
var fromA:uint = (fromColor >> 24) & 0xFF;
var fromR:uint = (fromColor >> 16) & 0xFF;
var fromG:uint = (fromColor >> 8) & 0xFF;
var fromB:uint = fromColor & 0xFF;
var toA:uint = (toColor >> 24) & 0xFF;
var toR:uint = (toColor >> 16) & 0xFF;
var toG:uint = (toColor >> 8) & 0xFF;
var toB:uint = toColor & 0xFF;
var resultA:uint = fromA*q + toA*progress;
var resultR:uint = fromR*q + toR*progress;
var resultG:uint = fromG*q + toG*progress;
var resultB:uint = fromB*q + toB*progress;
var resultColor:uint = resultA << 24 | resultR << 16 | resultG << 8 | resultB;
return resultColor;
}
Flash Player のすべての色は unsigned int として扱われます。Color クラスは Flash IDE に固有で、ColorTransform を拡張します。http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/fl/motion/Color.html#propertySummary
したがって、あなたの場合は、Color クラスの「.color」プロパティを使用するだけです。たとえば、実際の色を取得するか、代わりに ColorTransform から ColorTranform に移動する「interpolateTransform」関数を使用します。
ColorTransform インスタンスを使用できませんか? colorTransfrom を instanceMovieClip.transform.colorTransorm から取得し、 colorTransofrm を Color.interpolateTransform で補間しますか?
あなたが達成しようとしていることを理解していないと思います(なぜ2つのカラーインスタンスを補間する必要があるのですか?カラー(int)やカラートランスフォームではありません)?