2009-10-08 3 views
0

기본 이미지 movieclip 위에 기반 이미지와 일부 스프라이트가 있습니다 ... 스프라이트 중 일부는 사용자가 actionscript 3에서 그래픽 API를 사용하여 그릴 수 있습니다. 스프라이트를 만들지 만 불필요한 그림의 일부를 제거 할 수있는 브러시 같은 지우개를 만들 수는 없습니다. 나는 알파를 사용하지하려고하지만 그것은actionscript 문제 3 그림 그리기

내가 그것에 대해 검색 좀 일을하고 해결책을 마련하지 않습니다

1) Linebitmapstyle ...이 솔루션은 내 스프라이트가 될 수 있습니다 I 사촌 최고의 아니다 만약 내가 linebitmapstyle을 사용한다면, 이미지에서 픽셀을 스프라이트로 그려야한다. 그러나 스프라이트가 움직이면 그린 된 픽셀은 바뀌지 않을 것이다.

2) 마스킹 중 하나 나를 위해 작동하지 않을 수 있습니다

....

무엇 지우개 당신은 오히려 같은 것을 조작하기 쉽게 만들기 위해 비트 맵을 사용할 수 있습니다

+0

사이먼 다음에 당신이 코드를 작업하고 게시 할 수 있습니다. –

답변

3

를 만드는 가장 좋은 방법 (물론 스케일 러블 벡터 그래픽을 할 필요가 없다면!). 셰이프를 그리려면 그래픽 API를 사용하여 셰이프를 만들 수 있습니다.

이렇게하려면 "더미"스프라이트 (또는 다른 IBitmapDrawable 구현)를 인스턴스화하여 그래픽을 만든 다음 BitmapDatabitmapData.draw() 함수에 "복사"하십시오. 이 방법을 사용하면 모양의 픽셀을 제거하기 위해 BlendMode.ERASE 옵션을 사용하여 그림을 그릴 수 있습니다.

예 (내 마음의 상단에서) :

// creates a bitmap data canvas 
var bitmapData:BitmapData = new BitmapData(500, 500); 

// creates a bitmap display object to contain the BitmapData 
addChild(new Bitmap(bitmapData)); 

// creates a dummy object to draw and draws a 10px circle 
var brush:Sprite = new Sprite(); // note this is not even added to the stage 
brush.graphics.beginFill(0xff0000); 
brush.graphics.drawCircle(10, 10, 10); 

// the matrix will be used to position the "brush strokes" on the canvas 
var matrix:Matrix = new Matrix(); 

// draws a circle in the middle of the canvas 
matrix.translate(250, 250); 
bitmapData.draw(brush, matrix 

// translates the position 5 pixels to the right to slightly erase the previously 
// drawn circle creating a half moon    
matrix.translate(5, 0); 
bitmapData.draw(brush, matrix,null,BlendMode.ERASE); 
+0

나는 당신이 말한 것과 코드를 수정했다. 나는 lineTo를 브러시로 사용했지만 작동하지 않는다 ... – LittleFunny

+0

그것은 작동한다. 고맙다 ... – LittleFunny

+0

위대한, 괜찮아. –