2013-02-19 4 views
2

다음 코드를 실행하면 "-2"가 추적되고 있으며 이유를 이해하려고 내 머리를 망가 뜨리고 있습니다. getpixel32에 대해 예기치 않은 추적을 가져 오는 중입니다. 왜 아무도 볼 수 있습니까?

var bmd:BitmapData = new BitmapData(1,1,true,0xFFFFFFFF); 
bmd.setPixel32(0,0, 0x32FF6B45); 
trace(0x32FF6B45-bmd.getPixel32(0,0)); 

는 지금까지 내가 말할 수있는, 그것은 0 0x32FF6B45이 처음 좌표 0,0의 픽셀에 할당 추적한다. 그 값은 bmd.getPixel32 (0,0)에 반환되어야하고, 0x32FF6B45에서 뺄 때 0이됩니다. 왜 -2가 나옵니까?

편집 : 나는 개별적으로 값을 추적했고 그 의미가

점에서 -2 결과 위의 추적에서 운영 855599941에 0x32FF6B45 결과를 추적하고 bmd.getPixel32을 추적하기 때문에 (0,0) 결과는 855599943입니다. 이제 질문은 왜 그 값이 다른가? 유청 bmd.getPixel32 (0,0)도 855599941을 추적하지 않습니다?

답변

-1

예상됩니다.

이 값을 반환합니다

getPixel와 : #RRGGBB (RGB/빨강, 녹색, 파랑)

getPixel32이 값을 반환합니다

: # AARRGGBB (argb/alpha, red, green, blue)

예 :

trace('test 0x32FF6B45: '+0x32FF6B45); 
var bmd:BitmapData = new BitmapData(1,1,true,0xFFFFFFFF); 
trace('setting 0,0 to 0x32FF6B45'); 
bmd.setPixel32(0,0, 0x32FF6B45); 
var color:* = bmd.getPixel32(0,0) 
trace('0,0: '+color); 
trace(color-bmd.getPixel32(0,0)); 

결과 :

내가 무엇을 말할 수에서
test 0x32FF6B45: 855599941 
setting 0,0 to 0x32FF6B45 
0,0: 855599943 
0 

, 당신이 범위를 벗어날 플래시에있는 색상을 사용하고 있습니다. 색상 범위가 확실하지 않지만 이전의 경험에서 색상이 많은 Photoshop 요소를 사용할 때 알아 냈습니다. 색상 값이 범위를 벗어 났으므로 개체를 가져 오지 못하는 경우가있었습니다.

@ Jari도 투명성에 대해 정확합니다.

1

나는 동일한 문제가 있으며, 미리 곱셈 된 알파와 관련 있다고 생각합니다. described here. 내 코드에서 픽셀을 0xa08800ff로 설정하고 0xa08700ff로 돌아가고있었습니다. 0xff가 아닌 다른 알파가 필요한 경우 불행히도 모든 픽셀 값을 별도의 데이터 구조에 동시에 저장해야 할 수도 있습니다.