2009-12-30 3 views
0

알파 채널이있는 BitmapData 객체가 있습니다. ActionScript3 (FlashPlayer10)에서 알파 채널을 오프셋하는 방법을 알고 싶습니다. 오프셋을하면 색상 채널을 그대로두고 한 방향 (이미지 테두리를 감싼다)으로 그 채널의 모든 픽셀을 이동시키는 것을 의미합니다.BitmapData 객체의 단일 채널을 변환합니다.

하나의 채널에만 이러한 변환을 적용하는 좋은 방법이 있습니까?

답변

0

나는이 문제를 어떻게 해결할 것인가하는 것은 원래의 bitmapData 객체의 clone()을 만드는 것이라고 생각한다. 원본을 그대로 둡니다. 클론을 사용하여 원하는대로 모든 픽셀을 이동하십시오. "캐리 스크롤"은 없지만 너무 열심히하지는 않습니다. 여기에 하나 몇 가지 코드,하지만 당신은 한 방향으로 만 할 경우 당신은 그것을 많이 단순화 할 수 있습니다 :

http://www.actionscript.org/forums/showthread.php3?p=767722

스크롤 한 후, 다시 원래로 스크롤 클론에서 알파 채널을 복사() copyChannel를 사용합니다.

+0

감사합니다, 아름답게 작동합니다. – BuschnicK

0

이러한 종류의 작업에는 Adobe PixelBender를 사용하거나 ActionScript에서 수동으로 getVector/setVector를 사용하여 작성합니다. 그러나 모든 색상은 미리 곱한 알파로 저장되기 때문에 알파 채널을 이동하는 것은 좋지 않은 생각처럼 들립니다.

즉, 정밀도가 계속 저하됩니다.

+0

흠, 이전에 곱해진 알파 트릭에 대해 들어 본 적이 없습니다. 그것을 지적 주셔서 감사합니다. 정말 성능에 많은 도움이되는지 궁금합니다. 비트 맵을 수정할 때 논쟁의 여지가있는 트레이드 오프와 같이 보입니다. 왜냐하면 비트 맵을 사용하면 비트 맵이 훨씬 비싸게됩니다 ... – BuschnicK