2012-08-29 4 views
1

비트 맵의 ​​픽셀을 투명도로 .5라고 말하면서 비트 맵의 ​​픽셀을 복사하려고하는데 여기 어디서나 Google 또는 여기에 대한 참조를 찾을 수없는 것 같습니다! AS3 BitmapData 알파가있는 CopyPixels

내가 내 표준 복사 픽셀 코드가

_bitmapData.copyPixels(_bitmaps.vault[BitmapNames.BITMAPNAME], SCREENRECT, _drawPoint, null, null, true);

난 내가 통과 첫 번째 널 값이 BitmapData 그래서 내가 그와 함께 할 수있는 뭔가가 있으리라 믿고있어 alphaBitmapData:BitmapData을 표시라고 볼 수 있지만 내가 할 수 질수있어!

도움이 되시면 감사하겠습니다.

답변

1

나는 아래의 방법을 광기 뒤에 넣는 데 사용 된 코드 인 Will Kru의 대답을 대답으로 받아 들였습니다!

var alphaBitmap:BitmapData = new BitmapData(width, height, true, toARGB(0x000000, (.5 * 255)));

_bitmapData.copyPixels(_bitmaps.vault[BitmapNames.BITMAP], _drawRect, _drawPoint, alphaBitmap, null, true);

toARGB 기능

그래서 당신은 단지 작성시 비트 맵의 ​​알파를 정의 할 수 있습니다 여기에 alpha + RGB -> ARGB?

+1

네, 가능합니다. Copypixels는 첫 번째 매개 변수로 전달한 비트 맵과 네 번째 매개 변수로 전달한 비트 맵의 ​​알파 값에서 색상 값을 가져옵니다. 내 대답은 소스 비트 맵에 알파 값이 포함되어 있으므로 두 매개 변수 모두에 사용할 수 있다고 가정했습니다. –

4

this link 다음은 변수에 대한 설명입니다.

간단히 말해서 마지막 매개 변수 (mergeAlpha : Boolean)를 true로 설정하면 alphaBitmap의 알파를 효과적으로 사용하여 픽셀을 복사 할 때 함수가 4 번째 매개 변수 (alphaBitmap : BitmapData)를 고려하여 복사 된 픽셀. 따라서 첫 번째 매개 변수와 동일한 비트 맵을 네 번째 매개 변수에 전달하고 그에 따라 다섯 번째 매개 변수 (alphaPoint : Point)를 설정하고 마지막 매개 변수를 true로 설정해야합니다.

+0

발견했다. 비트 맵을 다른 BitmapData로 프레임 1에서 .5 투명도로 복사 한 다음 프레임 2에서 전체 비트 맵을 다시 그릴 때 비트 맵 데이터를 .4, 그 다음 .3 .....에 그립니다. 예를 들어)하지만 당신이 게시 한 예술적으로 알 수없는 것에서 나는 이것을 할 수 없습니까? – rorypicko

+0

원래의 비트 맵을 메모리에 유지하고 모든 비트 맵을 사용하여 원하는 비트 맵을 모든 프레임에서 다시 만들 수 있습니다. –

+0

저는 메모리에 저장하고 있습니다. 코드에 이론을 적용하는 방법을 이해하지 못했습니다. 나는 지금 그것을 해결했다! 이런 식으로 작동했습니다 'var test : BitmapData = new BitmapData (_drawRect.width, _drawRect.height, true, toARGB (0x000000, (.5 * 255))); \t \t \t \t _bitmapData.copyPixels (_bitmap.vault [BitmapNames.LEAPJUMPLINE], _drawRect, _drawPoint, test, null, true); } private 함수 toARGB (rgb : uint, newAlpha : uint) : uint { \t \t var argb : uint = 0; \t \t argb = (rgb); \t \t argb + = (newAlpha << 24); \t \t return argb; } ' – rorypicko