2011-10-27 17 views
1

なぜAS3のcolorTransformはシェイプの境界線を変換するのですか?ActionScript 3の色変換は境界線のみを変更します

Similar questionが掲載されていますが、そのような大規模な回避策を実行する必要はありません。

私のようなものがあります:私は色のように変換しますがあれば、私たちはここにwith(sh.graphics) doを使用することができます知っている

var sh:Shape = new Shape(); 
sh.graphics.lineStyle(4, 0x000000); 
sh.graphics.beginFill(0xFFFF00); 
sh.graphics.drawRect(0, 0, 200, 200); 
sh.graphics.endFill(); 
addChild(sh); 

イェジン:

sh.transform.colorTransform = new ColorTransform(1, 1, 1, 1, red_offset, green_ofs, b_off, 0); 

形状の唯一の境界線があるが変形した。 私は、フレームごとに異なる塗りつぶしで再描画しようとしましたが、パフォーマンスが過剰です。約10台の3Dプレーンがパフォーマンスキラーでした。

beginFill()lineStyle()によって設定されたペンを使用していないと、それが問題を引き起こしている可能性は、しかし、私は本当に私はスピンに私のユーバースーパーsemi3d-スピナーを必要とするような問題を知っていただきたいと思いますので、私はそれだけで考えることができます

彼のボーダーではなく色を変えながら! :)

ありがとうございます!

答えて

1

なぜColorTransformが線の色にのみ影響するのか分かりませんが(設計上の決定のようです)、ColorMatrixFilterは全体の形状(テスト済み)を変換します。それを恐れないでください - それは非常に簡単です。行列の最初の4列は乗数(1.0は100%)で、5番目の列が結果に加算されます。

 var sht:Shape = new Shape(); 
     sht.graphics.lineStyle(4, 0x7F7FFF); 
     sht.graphics.beginFill(0xFFFFFF); 
     sht.graphics.drawRect(0, 0, 200, 200); 
     sht.graphics.endFill(); 
     sht.x = 300; 
     sht.y = 100; 
     sht.filters = [ new ColorMatrixFilter(
      [ 0.5, 0.0, 0.0, 0.0, 0.0, 
       0.0, 1.0, 0.0, 0.0, 0.0, 
       0.0, 0.0, 0.7, 0.0, 0.0, 
       0.0, 0.0, 0.0, 1.0, 0.0 
      ])]; 
     addChild(sht); 
+0

あなたに大きな感謝!できるだけ早く試してみる。ところで、ColorMatrixFilterがより多くのパワーを提供する場合、ColorTransformのポイントは何ですか? –

+1

ColorTransformは簡単で高速でなければなりません.1つのベクトル乗算または4つのスカラー乗算であり、ColorMatrixFilterは4つのベクトルマルスと1つの加算です。 – alxx

関連する問題