Criando view em uma classe actionScript

3 respostas
J

Olá amigos… tudo bem??

estou com uma duvida em flex e gostaria da ajuda de vcs… O seguinte. Estou desenvolvendo um sistema em flex onde irei implementar o Pattern Observer … gostaria de fazer isso na Unha por questões de didática, pois esse projeto eh um trabalho de faculdade… por isso não qro usar o [Bindable] do flex para atualizar a cada alteração de valores… então gostaria de saber se posso, no construtor da minha classe criar um panel com alguns componentes que será adicionado na minha view assim q essa classe for instanciada e iniciada… tipo assim

public class MinhaClasse extends Observable
{

	public function MinhaClasse(view:Object):void 
	{
		var painel:Panel = new Panel;
	
		painel.width = 180;
		painel.height = 115;
		painel.x = 268;
		painel.y = 10;
		painel.id = "painel2";
		painel.title = "Novo painel";

		view.addChild(painel);		
	}
}

minha chamada na view seria algo como:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">

	<mx:Script>
		<![CDATA[
			import mx.managers.PopUpManager;

			public function criarClasse():void
			{
				var classe:MinhaClasse = new MinhaClasse(this);
			}
		]]>
	</mx:Script>

</mx:Application>

O parametro que meui construtor recebe seria a referencia do Componente ou modulo que instanciou minha classe para poder usar o addChild para incluir meu panel criado ao meu componente ou modulo…

primeiro: criar esse panel no construtor da minha classe eh possivel e seria dessa forma que deveria fazer?
Segundo: o modo de passar o parametro pro construtor seria desse modo msm, até o tipo (view:Object)?

desde já agradeço a atenção…

abraços

3 Respostas

F

Júnior,

primeiro: criar esse panel no construtor da minha classe eh possivel e seria dessa forma que deveria fazer?

No ciclo de vida de objetos Flex o certo é criar objetos filhos no método createChildren

protected function createChildren():void {
     super.createChildren();
     var classe:MinhaClasse = new MinhaClasse(this);
}

Pode ser deste modo como especificar um tipo mais específico:

[]s
Fabio da Silva

J

Fala Fabio… primeiro muito grato pela atenção, amigo…

mas não entendi direito o q quis dizes abaixo

protected function createChildren():void {  
     super.createChildren();  
     var classe:MinhaClasse = new MinhaClasse(this);  
}

sou novo em flex e não conheço esse modo…

essa function ficará onde? no meu MXML? e qto essa chamada

super.createChildren(); estou chamando esse metodo da classe do qual herdo, certo? mas que eh essa classe…

meu amigo, desculpe o monte de bobeira aqui exposta na resposta, mas estou mais perdido que cego em tiroteio agora…rs

grato novamente pela atenção

abraço

F

Júnior,
Tranquilo.
Em vez de vc ter um método criarClasse vc usará createChildren.
Por questões de memória o Flex utiliza um ciclo de vida, q passa por várias etapas, disparo de eventos métodos específicos.
Métodos protected são métodos definidos na classe mãe a qual vc está fazendo um override, isto é, vc quer q ela faça o é feito na classe mãe mais o seu código, por isso o super, se não for colocado vc pode ter resultados inesperados.

Dei uma palestra no FlexMania sobre este assunto: [url]http://www.flexmania.com.br/gravacoes.php[/url]
Vc tb pode ler em Creating and Extending Adobe Flex 3 Components no site [url]http://www.adobe.com/support/documentation/en/flex/[/url]

Se permite, como está iniciando te indico:

http://fabiophx.blogspot.com/2009/04/por-onde-comecar.html
http://fabiophx.blogspot.com/2010/03/aprendendo-flex-4.html

[]s

Criado 21 de abril de 2010
Ultima resposta 22 de abr. de 2010
Respostas 3
Participantes 2