Pergunta

Eu tenho um sprite que eu faço algum desenho no costume, mas eu gostaria que o recipiente para saber onde posicionar o sprite corretamente. Para fazer isso, o recipiente precisa saber o quão grande o sprite é. UIComponents passar por uma fase medida, mas sprites não. Como faço para calcular o tamanho do que um sprite será?

Editar: eu estou fazendo o desenho no Event.ENTER_FRAME, e está animado, então eu não posso dizer de antemão o quão grande ele vai ser. O UIComponent tem uma função de medida e eu gostaria de criar algo semelhante.

Foi útil?

Solução

A resposta precisa, tanto quanto eu pude perceber é, você não pode dizer antes do tempo, você deve realmente atrair para o sprite para determinar o seu tamanho.

Outras dicas

Sprites ter o tamanho que você desenhar neles. Não tem o tamanho de todo algo até que você tenha desenhado nele. Se o seu aplicativo permite que você pode desenhar uma borda (retângulo talvez) primeiro e depois medir o sprite. Mas não desenhar fora das fronteiras mais tarde.

Além disso, dependendo do que você está desenhando, então você pode ser capaz de usar a matemática para pré-calcular o tamanho final.

i. Se você está desenhando um círculo, você poderia usar matemática para descobrir a altura / largura final.

Mike

Dê uma olhada aqui - Espero que isso responde sua pergunta:

<?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 você executar isso, a instrução trace deve exibir a altura ea largura do Sprite desenhado, que é gerada aleatoriamente. Em outras palavras, você pode obter a altura ea largura do sprite de simplesmente consultando sua altura e propriedades de largura.

Se você precisa para o layout de alguns outros componentes com base na largura e altura Sprite, mas antes de realmente desenhá-lo, você pode desenhar em um objeto flash.display.Shape, use este tamanho como uma referência, e em seguida, anexar a forma na o Sprite.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top