원 모양의 중앙 등록 포인트 또는 가운데 등록이있는 다른 표시 객체를 유지하는 것은 어렵습니다.ActionScript - 비트 맵 객체로 변환되는 동안 표시 객체의 중심 등록을 유지 관리하는 동안 비트 맵 데이터 그리기
다음 코드는 원 모양을 비트 맵 객체로 변환하고 스테이지의 중심에 배치 한 다음 그 중심 등록 포인터를 제거합니다.
새로운 bitmapData 객체 (왼쪽 위)의 x 및 y 원점은 원 (가운데)의 x 및 y 원점과 동일하지만 bitmapData.draw의 x 및 y 위치를 변환 할 수 없습니다() - 매개 변수는 너비, 높이, 투명도 및 채우기 색만 허용합니다. 매트릭스 번역의 도움으로
var myCircle:Shape = new Shape();
myCircle.graphics.beginFill(0xFF0000, 1.0);
myCircle.graphics.drawCircie(0, 0, 100);
myCircle.graphics.endFill();
var matrix:Matrix = new Matrix();
matrix.tx = myCircle.width/2;
matrix.ty = myCircle.height/2;
var myCircleBitmapData:BitmapData = new BitmapData(myCircle.width, myCircle.height, true, 0x00FFFFFF);
myCircleBitmapData.draw(myCircle, matrix);
var result:Bitmap = new Bitmap(myCircleBitmapData, PixelSnapping.AUTO, true);
result.x = stage.stageWidth/2 - matrix.tx;
result.y = stage.stageHeight/2 - matrix.ty;
addChild(result);
, 새로운 비트 맵 객체가 무대 중앙에 나타나지만 등 일반 또는 3D 회전을 적용, 명확하게 등록 포인트는 이제 왼쪽 상단 함을 입증한다 대신에 센터.
센터 등록 된 표시 객체를 센터 등록을 유지하면서 비트 맵으로 변환하려면 어떻게해야합니까?
정확히 ... – TheDarkIn1978
물론, 원리는 유효합니다. 비트 맵을 회전하려면, 컨테이너 객체를 사용하지 않고 (아마도 더 간단 할 것입니다 만, 어쩌면) 행렬을 조작하고, 오프셋 (올바른 중심을 얻기 위해)을 회전시키고, 회전시킨 후 시작점으로 다시 이동해야합니다. 그런 다음 행렬로 객체를 다시 그립니다. – Sam