Question

Je fais un dessin personnalisé dans un sprite, mais je voudrais que le conteneur sache où positionner correctement le sprite. Pour ce faire, le conteneur doit savoir quelle est la taille du sprite. UIComponents passe par une étape de mesure, contrairement aux sprites. Comment calculer la taille d'un sprite?

Modifier: Je fais le dessin dans Event.ENTER_FRAME, et c'est animé, je ne peux donc pas dire à l'avance quelle sera sa taille. UIComponent a une fonction de mesure et j'aimerais créer quelque chose de similaire.

Était-ce utile?

La solution

La réponse précise, pour autant que je sache, est que vous ne pouvez pas dire à l'avance, vous devez réellement faire appel à l'image-objet pour déterminer sa taille.

Autres conseils

Les sprites prennent la taille que vous leur dessinez. Il n'a pas de taille du tout jusqu'à ce que vous ayez dessiné quelque chose. Si votre application le permet, vous pouvez commencer par tracer une bordure (un rectangle, par exemple), puis mesurer le sprite. Mais ne dessinez pas en dehors des frontières plus tard.

En outre, selon ce que vous dessinez, vous pourrez peut-être utiliser les mathématiques pour pré-calculer la taille finale.

i.e. si vous tracez un cercle, vous pouvez utiliser Math pour déterminer la hauteur / largeur finale.

mike

Regardez ici - j'espère que cela répond à votre question:

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

Si vous exécutez cette opération, l'instruction de trace doit afficher la hauteur et la largeur de l'image-objet dessinée générée de manière aléatoire. En d'autres termes, vous pouvez obtenir la hauteur et la largeur de l'image-objet simplement en interrogeant ses propriétés height et width.

Si vous devez mettre en forme d'autres composants en fonction de la largeur et de la hauteur de l'image-objet, mais avant de le dessiner, vous pouvez dessiner sur un objet flash.display.Shape, utilisez cette taille comme référence, puis attachez la forme à le Sprite.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top