Pregunta

Tengo un sprite en el que hago un dibujo personalizado, pero me gustaría que el contenedor sepa dónde colocar el sprite correctamente. Para hacer esto, el contenedor necesita saber qué tan grande es el sprite. Los componentes de UIC pasan por una etapa de medida, pero los sprites no. ¿Cómo calculo el tamaño que tendrá un sprite?

Editar: estoy haciendo el dibujo en Event.ENTER_FRAME, y está animado, así que no puedo decir con anticipación qué tan grande será. El componente UIC tiene una función de medida y me gustaría crear algo similar.

¿Fue útil?

Solución

La respuesta precisa, por lo que puedo deducir es que no se puede saber con anticipación, en realidad debe dibujar en el sprite para determinar su tamaño.

Otros consejos

Los sprites toman el tamaño que dibujas en ellos. No tiene tamaño en absoluto hasta que haya dibujado algo en él. Si su aplicación lo permite, primero puede dibujar un borde (tal vez un rectángulo) y luego medir el sprite. Pero no dibujes fuera de las fronteras más tarde.

Además, dependiendo de lo que esté dibujando, es posible que pueda usar las matemáticas para calcular previamente el tamaño final.

es decir, si está dibujando un círculo, puede usar Matemáticas para calcular la altura / anchura final.

mike

Eche un vistazo aquí. Espero que esto responda a su pregunta:

<?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 ejecuta esto, la instrucción de rastreo debe mostrar la altura y el ancho del Sprite dibujado, que se genera aleatoriamente. En otras palabras, puede obtener el alto y el ancho del sprite simplemente consultando sus propiedades de alto y ancho.

Si necesita diseñar algunos otros componentes en función del ancho y la altura del Sprite, pero antes de dibujarlo, puede dibujar en un objeto flash.display.Shape, use este tamaño como referencia y luego adjunte la Forma en el Sprite.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top