2013-08-13 5 views
0

투명도가 설정된 두 개의 BitmapData 객체가 있습니다. 하나는 큰 붉은 색 사각형이고, 다른 하나는 작은 파란색 원입니다.BitmapData를 사용하여 마스크 기능 구현

예를 들어, 빨간색 원 위에 파란색 원을 배치합니다. 흐림 원이있는 빨간색 사각형의 BitmapData에 투명 영역을 만들고 싶습니다. 마스크가 작동하는 것과 유사합니다.

getPixel32() 작업을 사용해 보았지만 속도가 매우 느립니다 (아래 참조). 내가 할 수있는 또 다른 방법이 있니? 감사합니다.

for(var x:int = 0; x < circleBitmapData.width; x++){ 
    for(var y:int = 0; y < circleBitmapData.width; y++){ 
     if(circleBitmapData.getPixel32(x,y) != 0x00000000){ 
      squareBitmapData.setPixel(x,y,0x00000000); 
     } 
    } 
} 

EDIT - 가능한 해결책이 하나 있지만 이상적이지 않습니다. 두 비트 맵을 병합 한 다음 threshold 메서드를 사용하여 특정 값 이상의 픽셀을 투명하게 만들 수 있습니다. 그래서 모든 파란색 픽셀을 투명하게 설정할 수있었습니다. 그러나 투명 영역 주위에 파란색의 얇은 링이 있습니다.

+0

마스크를 사용할 수없는 이유는 무엇입니까? – putvande

+0

블리 팅을하고 있기 때문에 – user1063998

답변

0

bitmapData의 임계 값 방법을 확인하십시오. 교차 영역이있는 bitmapData를 반환해야합니다. 이를 통해 픽셀을 가져오고 설정할 필요가 없습니다. 또한 getPixel32에는 setPixel32가 있어야합니다. P

+0

차이점을 찾을 수 없습니다. 내가 볼 수있는 가장 가까운 방법은 비교 방법입니까? 그러나 그것은 작동하지 않을 것입니다 – user1063998

+0

user1063998 어딘가에 당신의 프로젝트를 올려주세요. 그리고 당신을 친구로 데려 갈 것입니다. 내 이름으로 여기에 의견을 남기십시오. 그렇게 할 때 통보를받을 것입니다. – Discipol