2012-11-08 3 views
2

비트 맵에 그려야하지만 투명 픽셀을 그리지 않아야합니까? 여기비트 맵에서 그리는 방법은 없지만 투명 픽셀에서 그리는 방법은 무엇입니까?

예제 그림 :이 코드를 작성했습니다 http://i.stack.imgur.com/QvJTZ.png

:

import flash.display.Bitmap; 
import flash.events.Event; 
import flash.geom.Matrix; 

var s:S = new S(); 
var m_bitmapData = new BitmapData(s.width, s.height, true, 0x00000000); 
m_bitmapData.draw(s); 
var hole=new Sprite(); 

var hole_matrix:Matrix 
hole.graphics.beginFill(0x000000); 
hole.graphics.drawCircle(0,0,30); 


var bmp:Bitmap = new Bitmap(m_bitmapData); 
bmp.x = 50 
bmp.y =50 

stage.addChild(bmp); 

addEventListener(Event.ENTER_FRAME,asd); 
function asd(e:Event):void{ 
    hole_matrix=new Matrix(); 
    hole_matrix.translate(mouseX-bmp.x,mouseY-bmp.y); 
    m_bitmapData.draw(hole,hole_matrix); 
} 

그러나 결과는 그림 "NO"등이다.

누군가 설명해 주시겠습니까?

답변

0

알파 채널을 유지 한 다음 다시 복사합니다.

var tempBD:BitmapData=new BitmapData(m_bitmapData.width,m_bitmapData.height,true,0); 
... 
function asd(e:Event):void { 
    ... 
    tempBD.copyChannel(m_bitmapData,m_bitmapData.rect,new Point(),BitmapDataChannel.ALPHA,BitmapDataChannel.ALPHA); 
    m_bitmapData.draw(hole,hole_matrix); 
    m_bitmapData.copyChannel(tempBD,tempBD.rect,new Point(),BitmapDataChannel.ALPHA,BitmapDataChannel.ALPHA); 
} 

은 기본적으로 당신이 무엇을 : 당신은 당신이 다음, 원하는 다시 알파 채널을 복사 무엇을 그려, 그의 BitmapData에 알파 채널을 복사, 다른 곳에 캔버스의 BitmapData와 동일한 크기를 가지에서는 BitmapData 있습니다. 무엇이 투명하든, 투명하게 남았습니다. 알파 채널을 변경하지 않으려면 copyChannel()을 한 번만 누른 다음 복원하면됩니다.

+0

대단히 감사합니다! –

관련 문제