[心得] BitmapData.setPixel32 bug

看板Flash作者 (moonet)時間13年前 (2012/04/10 15:30), 編輯推噓1(102)
留言3則, 2人參與, 最新討論串1/1
有上色程式碼的 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

04/10 21:13, , 1F
alpha值在 0xAA (0.666)以下才會發生...迴圈跑出來的
04/10 21:13, 1F

04/10 21:25, , 2F
color1 = b0ffffff color2 = b0fefefe
04/10 21:25, 2F

04/10 21:26, , 3F
規律倒不是那麼重要 在寫程式時應該避免 getPixel
04/10 21:26, 3F
文章代碼(AID): #1FW-62wy (Flash)
文章代碼(AID): #1FW-62wy (Flash)