Apache flex 如何计算精灵的大小?

Apache flex 如何计算精灵的大小?,apache-flex,flash,actionscript-3,flex3,Apache Flex,Flash,Actionscript 3,Flex3,我有一个精灵,我做一些自定义绘图,但我想让容器知道在哪里正确定位精灵。为此,容器需要知道精灵有多大。UIComponents要经过一个度量阶段,但Sprite不会。如何计算精灵的大小 编辑:我正在事件中绘制。输入\u帧,它是动画的,所以我无法提前知道它将有多大。UIComponent有一个度量函数,我想创建类似的东西。精灵采用您在其中绘制的大小。在你画上东西之前,它根本没有大小。如果应用程序允许,您可以先绘制边框(可能是矩形),然后测量精灵。但是以后不要在边框外绘制。精灵的大小与您在边框内绘制的

我有一个精灵,我做一些自定义绘图,但我想让容器知道在哪里正确定位精灵。为此,容器需要知道精灵有多大。UIComponents要经过一个度量阶段,但Sprite不会。如何计算精灵的大小


编辑:我正在事件中绘制。输入\u帧,它是动画的,所以我无法提前知道它将有多大。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>

如果运行此命令,trace语句将显示随机生成的绘制精灵的高度和宽度。换句话说,您只需查询精灵的高度和宽度属性即可获得精灵的高度和宽度。

请看这里——我希望这能回答您的问题:

<?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语句将显示随机生成的绘制精灵的高度和宽度。换句话说,只需查询精灵的高度和宽度属性即可获得精灵的高度和宽度。

就我所能收集到的准确答案是,你不能提前知道,你必须实际绘制精灵以确定其大小。

就我所能收集到的准确答案是,你不能提前知道,必须实际绘制精灵以确定其大小。

如果需要根据精灵的宽度和高度布局其他一些组件,但在实际绘制之前,可以在flash.display.Shape对象上绘制,请将此大小用作参考,然后将形状附加到精灵上。

如果您需要根据精灵的宽度和高度布局其他一些组件,但在实际绘制之前,您可以在flash.display.Shape对象上绘制,使用此大小作为参考,然后将形状附加到精灵上。

另外,根据您正在绘制的内容,然后,您可以使用数学预先计算最终尺寸

i、 e.如果你在画一个圆,你可以用数学计算出最终的高度/宽度


mike

此外,根据您正在绘制的图形,您可以使用数学来预先计算最终尺寸

i、 e.如果你在画一个圆,你可以用数学计算出最终的高度/宽度


mike

请记住,宽度不考虑图形在DisplayObject中的位置,因此,如果使用负x或负y绘制,则需要使用getBounds()来确保其位置正确。请记住,宽度不考虑图形在DisplayObject中的位置,因此,如果在负x或负y方向绘制,则需要使用getBounds()确保可以正确定位。