2010-03-31 7 views
3

이미지 애셋이 포함되어 있으며 크기를 조정할 때 비트 맵 데이터를 가져 오려고하지만 디스플레이 목록에 추가하지 않으면이 작업을 수행 할 수 없습니다. SpriteAsset을 표시 목록에 추가하지 않고 크기를 조정할 수 있습니까?

나는이 시도 :

spriteAsset.setActualSize(w,h); 
spriteAsset.width = w; 
bmd.draw(spriteAsset); 

을하지만 다음 graphics.beginBitmapFill와의 BitmapData을 그릴 때(), 난 그냥 원래 않은 뻗어 이미지를 얻을.

모든 포인터? 아니면 별도의 9 비트 맵 이미지를 가져와 별도의 9 비트 맵을 채워야합니까?

건배, -Josh

+1

는 내부 사용자의 spriteAsset 퍼팅 시도 되세요 다른 Sprite (크기가 조정되지 않음)를 누른 다음 상위 Sprite를 그립니다. – danjp

+0

또한, setActualSize()는 객체의 크기를 즉시 조정하지 않습니다. updateDisplayList()에 대한 프레임 워크에서 나중에 호출 할 때 update 플래그를 사용합니다. – quoo

답변

2

내 경험을 복용하여 BitmapData.draw scale9 자산의() 스냅 샷은 자산이 표시 목록에 추가 된 경우에도 scale9가 삭제된다는 것입니다. 이 문제는 제가 걱정하는 한, 그것이보고되었는지는 모르겠습니다.

scale9 실망을 제외하고는 BitmapData.draw가 행렬 매개 변수를 사용할 수 있다는 점을 잊지 마십시오. 기본적으로 그것은 null이며 단위 행렬을 의미합니다 (축척, 회전 등 없음). 변환 된 자산의 스냅 샷을하려면 ...의 변환 행렬을 제공해야

bmd.draw(spriteAsset, spriteAsset.transform.matrix) 

(이 물건을 확인을 두 번하지 않았 죄송합니다, 그래서 YMMV.)

+0

생각만큼 바보 같았습니다. maintainAspectRation with Image :) – Sophistifunk

0

Danjp의 솔루션이 좋은,하지만 당신은 비트 맵 데이터 자체의 크기를 조정하려면, 규모 행렬을 사용해보십시오, 예 :

var scaledBitmapData:BitmapData = new BitmapData(newWidth, newHeight); 
var scaleMatrix:Matrix = new Matrix(); 
scaleMatrix.scale(scaleFactor, scaleFactor); 

scaledBitmapData.draw(bitmap, scaleMatrix); 
+0

매트릭스를 사용하면 스케일을 조정하지만 scale9 격자는 무시됩니다. ( – Sophistifunk

+0

오, 죄송합니다. 9 부분을 완전히 간과했습니다. – quoo

관련 문제