2012/4/10

BitmapData.setPixel32 bug

var color1:uint = 0x01010101;
var bitmapData:BitmapData = new BitmapData(1,1,true, color1);
var color2:uint = bitmapData.getPixel32(0,0);
trace(color1 == color2);

以上的程式輸出 :
false

var color1:uint = 0x01010101;
var bitmapData:BitmapData = new BitmapData(1,1,true, color1);
bitmapData.setPixel32(0,0,color1);
var color2:uint = bitmapData.getPixel32(0,0);
trace(color1 == color2);
trace(color1.toString(16));
trace(color2.toString(16));

以上的程式輸出 :
false
1010101
1000000


從這兩個 case 我們知道在 setPixel32 設定顏色跟 BitmapData 建構式傳入顏色是一樣的結果


var color1:uint = 0x010179ff;
var bitmapData:BitmapData = new BitmapData(1,1,true, color1);
var color2:uint = bitmapData.getPixel32(0,0);
trace("color1 = " + color1.toString(16));
trace("color2 = " + color2.toString(16));

以上的程式輸出 :
color1 = 10179ff
color2 = 10000ff


var color1:uint = 0x010180ff;
var bitmapData:BitmapData = new BitmapData(1,1,true, color1);
var color2:uint = bitmapData.getPixel32(0,0);
trace("color1 = " + color1.toString(16));
trace("color2 = " + color2.toString(16));

以上的程式輸出 :

color1 = 10180ff
color2 = 100ffff


從這兩個 case 我們知道他是根據 A 的值對RGB分別作某個四捨五入的行為


我猜是為了繪圖加速之類的事情作的吧


不過這個真的會害死人 = =

沒有留言: