스프라이트의 크기를 계산하는 방법?
-
06-07-2019 - |
문제
커스텀 드로잉을하는 스프라이트가 있지만 컨테이너가 스프라이트를 올바르게 배치 할 위치를 알고 싶습니다. 이를 위해 컨테이너는 스프라이트가 얼마나 큰지 알아야합니다. uicomponents는 측정 단계를 거치지 만 스프라이트는 그렇지 않습니다. 스프라이트가 될 크기를 어떻게 계산합니까?
편집하다: event.enter_frame에서 드로잉을하고 있습니다. 애니메이션이므로 얼마나 큰지 미리 알 수 없습니다. uicomponent에는 측정 기능이 있으며 비슷한 것을 만들고 싶습니다.
해결책
정확한 대답은 내가 모을 수있는 한, 미리 알 수 없다. 실제로 크기를 결정하기 위해 스프라이트에 들어가야한다.
다른 팁
스프라이트는 당신이 그린 크기를 가져옵니다. 무언가를 그릴 때까지 크기가 전혀 없습니다. 응용 프로그램에서 먼저 테두리 (직사각형)를 그린 다음 스프라이트를 측정 할 수 있습니다. 그러나 나중에 국경 밖에 그리지 마십시오.
또한, 당신이 그리는 것에 따라, 당신은 수학을 사용하여 최종 크기를 사전 계산할 수 있습니다.
즉 원을 그리는 경우 수학을 사용하여 최종 높이 / 너비를 파악할 수 있습니다.
마이크
여기를 살펴보십시오 - 이것이 귀하의 질문에 답하기를 바랍니다.
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<![CDATA[
import mx.core.UIComponent;
private var s:Sprite;
private var w:UIComponent;
override protected function createChildren():void
{
super.createChildren();
if (!s)
s = getSprite();
w = new UIComponent();
trace("The sprite measures " + s.width + " by " + s.height + ".");
w.addChild(s);
box.addChild(w);
}
private function getSprite():Sprite
{
var s:Sprite = new Sprite();
s.graphics.lineStyle(1, 0xFFFFFF);
s.graphics.beginFill(0xFFFFFF, 1);
s.graphics.drawRect(0, 0, Math.floor(Math.random() * 1000), Math.floor(Math.random() * 1000));
s.graphics.endFill();
return s;
}
]]>
</mx:Script>
<mx:Box id="box" backgroundColor="#FFFFFF" />
</mx:Application>
이것을 실행하면 추적 명령문은 무작위로 생성되는 그려진 스프라이트의 높이와 너비를 표시해야합니다. 다시 말해, 높이와 너비 특성을 쿼리하여 스프라이트의 높이와 너비를 얻을 수 있습니다.
스프라이트 너비와 높이를 기반으로 다른 구성 요소를 레이아웃해야하지만 실제로 그려러 가기 전에 Flash.Display.shape 객체를 그릴 수 있습니다.이 크기를 참조로 사용한 다음 스프라이트에 모양을 부착하십시오.