Como calcular o tamanho de um sprite?
-
06-07-2019 - |
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.
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.