如何计算精灵的大小?

时间:2009-01-08 20:56:13

标签: flex flash actionscript-3 flex3

我有一个精灵,我做了一些自定义绘图,但我希望容器知道正确定位精灵的位置。要做到这一点,容器需要知道精灵有多大。 UIComponents经历了一个衡量阶段,但精灵没有。如何计算精灵的大小?

编辑:我正在使用Event.ENTER_FRAME进行绘制,并且它已经过动画,因此我无法提前告诉它有多大。 UIComponent有一个度量函数,我想创建类似的东西。

5 个答案:

答案 0 :(得分:2)

准确的答案,据我所知,你不能提前告诉,你必须实际吸引精灵来确定它的大小。

答案 1 :(得分:1)

Sprite采用你在其中绘制的大小。在你画完东西之前它根本没有尺寸。如果您的应用程序允许您可以先绘制边框(可能是矩形),然后测量精灵。但是以后不要在境外画画。

答案 2 :(得分:1)

此外,根据您绘制的内容,您可以使用数学预先计算最终尺寸。

即。如果你画一个圆圈,你可以用Math来计算最终的高度/宽度。

麦克

答案 3 :(得分:0)

看看这里 - 我希望这能回答你的问题:

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

答案 4 :(得分:0)

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