AS 3.0/ Notícias

Adicionando Objetos a aplicação em tempo de execução

Outra dúvida bastante comum para usuários que ainda não estão habituados à escrever parte do código em AS3, e , parte do código em MXML.
Basicamente MXML é um lexical de tudo que você poderia fazer usando AS3, MXML apenas simplifica esse uso e torna mais fácil a adoção ao invés de simplesmente criar puramente AS 3.
Os exemplos abaixo são bens usuais, eu tive essa experiência própria quando em um aplicativo feito em Flex precisou de mais ou menos 40 objetos no palco. Imagine tentar administrar isso usando um laptop de 15″. A tarefa é impossível, então vou postar uma solução bem simples e básica, não foi a que eu usei especificadamente, por quê, como diria Galileu Galilei – “”Não se pode ensinar alguma coisa a alguém, pode-se apenas auxiliar a descobrir por si mesmo.”

Então como usar a adição de objetos ao Application em tempo de execução?

Exemplo 1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<br />
<?xml version="1.0" encoding="utf-8"?><br />
<mx:Application initialize="inicializa();" xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="413"><br />
	<mx:Script><br />
		</p>
<p>			public function inicializa():void<br />
			{<br />
				removeChild(um);<br />
				removeChild(dois);<br />
				removeChild(tres);<br />
				removeChild(quatro);<br />
			}<br />
			public function adicionaUm():void<br />
			{<br />
					addChildAt(um,numChildren +1);<br />
			}<br />
			public function adicionaDois():void<br />
			{<br />
					addChildAt(dois,numChildren +1);<br />
			}<br />
			public function adicionaTres():void<br />
			{<br />
					addChildAt(tres,numChildren +1);<br />
			}<br />
			public function adicionaQuatro():void<br />
			{<br />
					addChildAt(quatro,numChildren +1);<br />
			}<br />
		<br />
	</mx:Script></p>
<p>		<mx:Panel title="Painel - 1" id="um" width="100" height="100" x="19" y="74"></p>
<p>		</mx:Panel><br />
		<mx:Panel title="Painel - 2" id="dois" width="200" height="200" x="19" y="74"></p>
<p>		</mx:Panel><br />
		<mx:Panel title="Painel - 3" id="tres" width="150" height="150" x="19" y="74"></p>
<p>		</mx:Panel><br />
		<mx:Panel title="Painel - 4" id="quatro" width="250" height="250" x="19" y="74"></p>
<p>		</mx:Panel><br />
		<mx:Button mouseDown="adicionaUm()" x="126" y="10" label="Painel 1"/><br />
		<mx:Button mouseDown="adicionaDois()" x="10" y="10" label="Remove todos"/><br />
		<mx:Button mouseDown="adicionaTres()" x="205" y="10" label="Painel 2"/><br />
		<mx:Button mouseDown="adicionaQuatro()" x="126" y="40" label="Painel 3"/><br />
		<mx:Button x="205" y="40" label="Painel 4"/></p>
<p></mx:Application><br />

Exemplo 2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<br />
<?xml version="1.0" encoding="utf-8"?><br />
<mx:Application initialize="addButton();" xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="413"><br />
	<mx:Script><br />
		<br />
			import mx.controls.Button;<br />
			import mx.containers.Panel;<br />
			import mx.core.Application;<br />
			import flash.events.MouseEvent;<br />
			public var painel:Panel = new Panel();</p>
<p>			public function add(event:Event):void<br />
			{<br />
				painel.title = "Painel - 1";<br />
				painel.width = 200;<br />
				painel.height = 200;<br />
				painel.x = 40;<br />
				painel.y = 30;<br />
				addChildAt(painel,numChildren -1);<br />
			}</p>
<p>			public var botao:Button = new Button();<br />
			public function addButton():void<br />
			{<br />
				botao.label = "Adicionar Painel";<br />
				botao.x = 5;<br />
				botao.y = 5;<br />
				addChildAt(botao,0);<br />
				botao.addEventListener(MouseEvent.MOUSE_DOWN,add);<br />
			}<br />
		<br />
	</mx:Script></p>
<p></mx:Application><br />

One thought on “Adicionando Objetos a aplicação em tempo de execução

  1. Boa Boa como diria você mesmo……..rs

    Muito interessante seu ponto de vista em comparar o pc e um laptop, pois existem diversas diferenças.
    Mas o que mais me interessou foi a frase de Galileu 😉

    Abraços

Comments are closed.