参考:
インタビューの前に私は、画像の色を変更する方法を求めています。Flashは前に行われないための時間のように見える、白鷺を行った後、そのような需要が、それは研究されていない、ありません。
今、画像の色を変更する方法GETを取得します。
ディレクトリ
画像内のピクセルのカラー値
二つのフィルタ
三色行列
4つのシナリオ
画像内のピクセルのカラー値
ビットマップを作成し、印刷ビットマップのカラー値
聞かせてBM:egret.Bitmap =新しいegret.Bitmap(); bm.texture = RES.getRes( "preload_start_png")。 this.addChild(BM)。 console.log(bm.texture.getPixels(0,0、bm.width、bm.height))。
輸出
あなたは、画像の色は、アレイによって保持されて見ることができます。画像の色を変更するには、私の最初に考えたのは、画像の色を変更することができます、配列内の値を変更することがありませんでした。しかし、白鷺は、配列の値を変更するためのインタフェースを提供し、その方法を与えるものではありません。
二つのフィルタ
絵淡色表示効果を追加するには
聞かせてBM:egret.Bitmap =新しいegret.Bitmap(); bm.texture = RES.getRes( "preload_start_png")。 this.addChild(BM)。 console.log(bm.texture.getPixels(0,0、bm.width、bm.height))。 VAR colorMatrix = [ 0.3,0.6,0,0,0、 0.3,0.6,0,0,0、 0.3,0.6,0,0,0、 0,0,0,1,0 ]。 VaRのcolorFlilter =新しいegret.ColorMatrixFilter(colorMatrix)。 bm.filters = [colorFlilter]。
フィルタが使用されていない前に、
フィルタを使用した後
だから、テクスチャカラー値にそれを変更するか、フィルタを使用した後、私は、出力ビット
聞かせてBM:egret.Bitmap =新しいegret.Bitmap(); bm.texture = RES.getRes( "preload_start_png")。 this.addChild(BM)。 console.log( "使用滤镜前:") はconsole.log(bm.texture.getPixels(0,0、bm.width、bm.height))。 VAR colorMatrix = [ 0.3,0.6,0,0,0、 0.3,0.6,0,0,0、 0.3,0.6,0,0,0、 0,0,0,1,0 ]。 VaRのcolorFlilter =新しいegret.ColorMatrixFilter(colorMatrix)。 bm.filters = [colorFlilter]。 console.log( "使用滤镜后:"); console.log(bm.texture.getPixels(0,0、bm.width、bm.height))。
出力色値が変化しないことが判明します。カラーフィルタを推測することは、最終的な画像にカラー行列を出力する前に、元の値に基づいています。
三色行列
私たちは、次のテストするために、いくつかの行列を使用しています。
元の色値:
A = [ 1,0,0,0,0,
0,1,0,0,0,
0,0,1,0,0,
0,0,0,1,0 ]
得出结果是
R’ = R
G’ = G
B’ = B
A’ = A
变灰色:
A = [ 0.3,0.6,0,0,0,
0.3,0.6,0,0,0,
0.3,0.6,0,0,0,
0,0,0,1,0 ]
得出结果是
R’ = 0.3*R + 0.6*G
G’ = 0.3*R + 0.6*G
B’ = 0.3*R + 0.6*G
A’ = A
增加亮度:
A = [ 1,0,0,0,100,
0,1,0,0,100,
0,0,1,0,0,
0,0,0,1,0 ]
得出结果是
R’ = R + 100
G’ = G + 100
B’ = B
A’ = A
四 应用场景
1. 游戏中禁止使用某个按钮,需要将按钮变灰时。
平时都是美术出一个普通按钮和一个灰色按钮。
2. 游戏中使用多张相同图片,但是仅仅是图片颜色不同时。