Domanda

Ho uno sprite in cui eseguo alcuni disegni personalizzati, ma vorrei che il contenitore sapesse dove posizionare correttamente lo sprite. Per fare ciò, il contenitore deve sapere quanto è grande lo sprite. I componenti di UIC passano attraverso una fase di misura, ma gli sprite no. Come calcolo la dimensione che sarà uno sprite?

Modifica: sto realizzando il disegno in Event.ENTER_FRAME ed è animato, quindi non posso dire in anticipo quanto sarà grande. UIComponent ha una funzione di misura e vorrei creare qualcosa di simile.

È stato utile?

Soluzione

La risposta precisa, per quanto posso raccogliere è, non puoi dirlo in anticipo, devi effettivamente attingere allo sprite per determinare le sue dimensioni.

Altri suggerimenti

Gli sprite prendono le dimensioni che ci disegni. Non ha alcuna dimensione fino a quando non ci hai disegnato qualcosa. Se la tua applicazione lo consente, puoi prima disegnare un bordo (forse un rettangolo) e poi misurare lo sprite. Ma non disegnare oltre i confini in seguito.

Inoltre, a seconda di cosa stai disegnando, potresti essere in grado di usare la matematica per pre-calcolare la dimensione finale.

vale a dire. se stai disegnando un cerchio, puoi usare la matematica per capire l'altezza / larghezza finale.

mike

Dai un'occhiata qui - Spero che questo risponda alla tua domanda:

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

Se lo esegui, l'istruzione trace dovrebbe visualizzare l'altezza e la larghezza dello Sprite disegnato, che viene generato casualmente. In altre parole, puoi ottenere l'altezza e la larghezza dello sprite semplicemente interrogando le sue proprietà di altezza e larghezza.

Se è necessario impaginare alcuni altri componenti in base alla larghezza e all'altezza dello Sprite, ma prima di disegnarlo effettivamente, è possibile disegnare su un oggetto flash.display.Shape, utilizzare questa dimensione come riferimento, quindi collegare la forma su lo Sprite.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top