作者etrexetrex (moonet)
看板Flash
標題[心得] BitmapData.setPixel32 bug
時間Tue Apr 10 15:30:06 2012
有上色程式碼的
blog :
http://etrex.blogspot.com/2012/04/bitmapdatasetpixel32-bug.html
== 原文 ==
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分別作某個四捨五入的行為
我猜是為了繪圖加速之類的事情作的吧
不過這個真的會害死人 = =
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.137.198.18
推 scars:alpha值在 0xAA (0.666)以下才會發生...迴圈跑出來的 04/10 21:13
→ etrexetrex:color1 = b0ffffff color2 = b0fefefe 04/10 21:25
→ etrexetrex:規律倒不是那麼重要 在寫程式時應該避免 getPixel 04/10 21:26