Как рассчитать размер спрайта? - PullRequest
0 голосов
/ 08 января 2009

У меня есть спрайт, в котором я делаю нестандартное рисование, но я бы хотел, чтобы контейнер знал, где правильно разместить спрайт. Для этого контейнер должен знать, насколько велик спрайт. Компоненты UIC проходят этап измерения, а спрайты - нет. Как рассчитать размер спрайта?

Редактировать: Я делаю рисунок в Event.ENTER_FRAME, и он анимирован, поэтому я не могу заранее сказать, насколько большим он будет. UIComponent имеет функцию меры, и я хотел бы создать нечто подобное.

Ответы [ 5 ]

2 голосов
/ 11 января 2009

Точный ответ, насколько я понимаю, вы не можете сказать заранее, вы должны нарисовать спрайт, чтобы определить его размер.

1 голос
/ 12 апреля 2009

Кроме того, в зависимости от того, что вы рисуете, вы можете использовать математику для предварительного расчета окончательного размера.

т.е. если вы рисуете круг, вы можете использовать Math для определения окончательной высоты / ширины.

микрофон

1 голос
/ 09 января 2009

Спрайты принимают размер, который вы в них рисуете. Он вообще не имеет размера, пока вы не нарисуете в нем что-то. Если ваше приложение позволяет, вы можете сначала нарисовать границу (возможно, прямоугольник), а затем измерить спрайт. Но не рисуйте за границами позже.

0 голосов
/ 15 января 2009

Если вам нужно расположить некоторые другие компоненты на основе ширины и высоты спрайта, но перед тем, как вы начнете рисовать, вы можете нарисовать объект flash.display.Shape, использовать этот размер в качестве ссылки, а затем прикрепить Shape к Спрайт.

0 голосов
/ 09 января 2009

Загляните сюда - надеюсь, это ответит на ваш вопрос:

<?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>

Если вы запустите это, оператор trace должен отобразить высоту и ширину нарисованного спрайта, который генерируется случайным образом. Другими словами, вы можете получить высоту и ширину спрайта, просто запросив его свойства высоты и ширины.

...