내가 예를 들어 내가 사용 FFFF00FF (불투명 마젠타)로 설정 일부 32 비트의 BitmapData에 fillRects (즉, 투명성 = 사실과 배경색을 사용하려고 해요 :.AS3의 BitmapData fillRect 할 예상대로 작동하지
fillRect(rect, 0xFF0000FF);
예상대로
이는 불투명 파란색하는 구형을 그릴 것입니다,하지만 ...이, 오른쪽 반투명 블루 RECT을 그릴해야
fillRect(rect, 0x550000FF);
?하지만 그 대신 나는 것처럼 다크 블루 RECT 받고 있어요 파란색은 검정색과 섞여있다. (배경은 마젠타 색이다. 기억해라. 기본 마젠타?).
색상 값을 0x000000FF로 설정하면 기본 마젠타 색을 100 %로 지정해야하지만 대신 100 % 검정색을 얻게됩니다.
BitmapData는 32 비트 ARGB로 생성되었으므로 여기에 무슨 문제가 있는지 궁금합니다.
기본 AS3 동작으로 보입니까? 내가 설명한 것처럼 실제로 동작하는 작은 테스트 클래스 ...
package
{
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Sprite;
import flash.geom.Rectangle;
public class Main extends Sprite
{
public function Main()
{
stage.color = 0x000000;
var bd:BitmapData = new BitmapData(400, 300, true, 0xFFFF00FF);
var b:Bitmap = new Bitmap(bd);
addChild(b);
bd.fillRect(new Rectangle(0, 0, 200, 200), 0x000000FF);
}
}
}
을 만든 후 당신은 fillRect 할로 그린 RECT는 마젠타 것 기대하지만 분명히 스테이지의 BG 색상을합니다. 이제 내 질문 :
원하는 효과를 얻을 수있는 방법이 있나요? (fillRect 알파는 플래시 스테이지가 아닌 비트 맵 데이터의 bg 색상에 적용됩니다)?
추신 draw 메소드는 더 많은 옵션을 사용할 수 있습니다. :) 그러나 여러분이해야 할 일에 대한 아주 간단한 예제였습니다. –
힌트를 보내 주셔서 감사합니다! 그래, 그리기 방법은 훨씬 더 많은 일을 할 수 있지만 훨씬 더 느립니다. 이 코드는 빠른 스크롤링 게임에 사용되므로 draw()를 사용하지 않는 것이 좋습니다. – BadmintonCat
Draw() 대신 copyPixels()을 사용하는 것이 좋습니다. –