Criar objeto de evento no flex 3 ?[RESOLVIDO]

8 respostas
chamuska

Galera, como estou aprendendo sozinho a programar em Flex e AS3 eu estou apanhando para criar um Objeto que crie um evento na tela :frowning:

Bom, quero criar um videoDisplay na tela toda vez que eu apertar um botao e se possivel que cada vez que eu clicar no botao ele coloque um videoDisplay ao lado do outro. É possivel criar isso em um objeto ?!

Tentei varias vezes aqui mas nao estou conseguido, sera que alguem pode postar um exemplo pra mim ??

Valeu!

8 Respostas

R

Sim, é possivel. Para incluir um componente você deve utilizar uma função actionscript que contenha a lógica para criar o objeto.
Para agrupá-los lado a lado você deve usar um container como o HBox (não lembro agora o nome no Flex 4) que mantém todos componentes lado a lado.

Por exemplo (código não irá compilar mas contém a lógica):

<mx:Button click=criarVideoDiplay(); />
<mx:HBox id="box"/>

<mx:Script>

private function criarVideoDisplay():void
{
 var display:VideoDisplay ....
 box.addChild(display);
}

</mx:Script>
chamuska

Valeu Rafael, testei seu codigo e funciono!!

Porem, eu queria colocar numa classe em AS3 a parte que cria o VideoDisplay e chamar ela como um objeto e fazer aparecer na tela.
Tem como faze isso ?

O que eu tentei foi isso:
No mxml

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" viewSourceURL="srcview/index.html">
	<mx:Script>
        <![CDATA[
        	import mx.controls.VideoDisplay;
        
        	import campo.videoTela;
        
        	public function campoVideo():void
        	{
        		var video:videoTela = new videoTela();
        		
        		box.addChild(video.addVideo());
        		
        	}
        ]]>
    </mx:Script>

    <mx:Button label="Video" click="campoVideo()" horizontalCenter="0" verticalCenter="0" />
    <mx:HBox id="box"/>
</mx:Application>

Mas da erro na linha que tem o comando box.addChild(video.addVideo());

Na classe AS3

package campo
{
	import mx.controls.VideoDisplay;
	
	public class videoTela
	{
		public function videoTela()
		{
			super();
		}

		public function addVideo():void
		{
			var display:VideoDisplay = new VideoDisplay();
			display.width=100;
			display.height=100;
		}
	}
}

Ta certo faze assim ?!
E pq da o erro no mxml ?

Obrigado!

R

Você precisa retornar o VIdeoDisplay da função. Veja a modificação abaixo.

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" viewSourceURL="srcview/index.html">
	<mx:Script>
        <![CDATA[
        	import mx.controls.VideoDisplay;
        
        	import campo.videoTela;
        
        	public function campoVideo():void
        	{
        		var video:videoTela = new videoTela();
        		
        		box.addChild(video.addVideo());
        		
        	}
        ]]>
    </mx:Script>

    <mx:Button label="Video" click="campoVideo()" horizontalCenter="0" verticalCenter="0" />
    <mx:HBox id="box"/>
</mx:Application>

Mas da erro na linha que tem o comando box.addChild(video.addVideo());

Na classe AS3

package campo
{
	import mx.controls.VideoDisplay;
	
	public class videoTela
	{
		public function videoTela()
		{
			super();
		}

		public function addVideo():[b]VideoDisplay[/b]
		{
			var display:VideoDisplay = new VideoDisplay();
			display.width=100;
			display.height=100;
                        [b]return display;[/b]
		}
	}
}
chamuska

Massa!
Obrigado por corrigir meu codigo!
E tem como ‘desrtuit’ o objeto depois que eu nao precisar mais dele ??

Por exemplo, vou criar 4 objetos usando essa classe do video, vou colocar o resultado (‘VideoDisplay’) do que retorna da função no HBox, como vão ser 4 objetos, tem como eu remover o 2 e depois adicionar outro ?!

E obrigado por estar me ajudando ai, pois Flex e AS3 para mim é algo muito diferente do que estou acostumado a programar!

Valeu!

R

Destruir que você diz seria remover do box?

Se é isso, tem sim:

box.removeChildAt(0); //remove o primeiro filho - pode passar qualquer index para o campo

renzonuccitelli

Precisando de um curso flex para acelerar o aprendizado, acesse Nuccitec.

[]s

chamuska

RafaelViana:
Destruir que você diz seria remover do box?

Se é isso, tem sim:

box.removeChildAt(0); //remove o primeiro filho - pode passar qualquer index para o campo

Funciono Rafael!
Ja estou implementando o codigo!
Mais uma dificuldade no Flex que foi superada graças a sua ajuda!

Muito obrigado!

chamuska

renzonuccitelli:
Precisando de um curso flex para acelerar o aprendizado, acesse Nuccitec.

[]s

Se for curso a distancia dai posso até ve pra faze hehe!
Pelo que vi o curso é em São Paulo e eu moro em Curitiba.

Obrigado!

Criado 12 de fevereiro de 2011
Ultima resposta 14 de fev. de 2011
Respostas 8
Participantes 3