Frage

Ich habe ein Sprite, das ich einige benutzerdefinierte tun Zeichnung in, aber ich würde den Container gerne wissen, wo das Sprite richtig zu positionieren. Um dies zu tun, muss der Behälter wissen, wie groß das Sprite ist. UIComponents geht durch eine Maßnahme der Bühne, aber Sprites nicht. Wie berechne ich die Größe, die ein Sprite wird?

Edit: Ich mache die Zeichnung in Event.ENTER_FRAME, und es ist animiert, so kann ich nicht vor der Zeit sagen, wie groß es sein wird. Die UIComponent hat eine Messfunktion, und ich möchte etwas ähnliches erstellen.

War es hilfreich?

Lösung

Die genaue Antwort, soweit ich sammeln kann, ist, Sie nicht vor der Zeit sagen können, müssen Sie tatsächlich in die Sprite ziehen es ist Größe zu bestimmen.

Andere Tipps

Sprites nehmen Sie die Größe, die Sie in ihnen ziehen. Es hat keine Größe überhaupt, bis Sie etwas in sie gezeichnet haben. Wenn Ihre Anwendung erlaubt können Sie (vielleicht Rechteck) eine Grenze ziehen und dann das Sprite messen. Aber nicht außerhalb der Grenzen später ziehen.

Auch, je nachdem, was Sie zeichnen, dann können Sie in der Lage sein, Mathematik zu verwenden, um die endgültige Größe vorab zu berechnen.

d. wenn Sie einen Kreis zeichnen, könnten Sie Math verwenden, um die endgültige Höhe / Breite ausrechnen.

mike

Werfen Sie einen Blick hier - ich hoffe, Ihre Frage damit beantwortet:

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

Wenn Sie dies ausführen, wird die trace-Anweisung sollte die Höhe und Breite des gezogenen Sprite anzuzeigen, die zufällig erzeugt wird. Mit anderen Worten, können Sie die Höhe und Breite des Sprites einfach durch Abfragen seiner Höhe und Breite Eigenschaften erhalten.

Wenn Sie einige andere Komponenten auf der Sprit Breite und Höhe der Basis-Layout, aber bevor es tatsächlich zeichnen, können Sie auf einem flash.display.Shape Objekt zu zeichnen, diese Größe als Referenz, und dann die Form legt auf die Sprite.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top