Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

TestandoSistemas

onClipEvent (load) para AS3

Recommended Posts

estou convertendo um .fla em AS2 para AS3, mas me deparei com um codigo bem simples que não sei como fazer no AS3.

tenho um mc que tem um codigo assim

onClipEvent (load){
//ações diversas
}
digamos que a instancia fosse meuMc1, como seria o codigo?

tentei usar o ENTER FRAME mas não serve, pois quero apenas 1 execução.

tambem não posso usar COMPLETE ou Progress, pois ñ tem herança de Loader.

da classe Event como ADDED e etc tambem não funcionam.

 

Alguma sugestão?

Compartilhar este post


Link para o post
Compartilhar em outros sites

tabela de conversão oficial !

 

Tabela de Conversão

 

Abraços

Sim, eu conheço essa documentação, mas se você reparar, essa função foi removida, portanto deve ser escrita de uma outra forma, provavelmente adicionando um listener, mas não sei qual listener ou se seria isso mesmo.

 

o que eu quero, é de alguma forma executar um codigo quando um determinado mc for iniciado. Tenho um MC que é usado de diferentes formas 6 vezes dependendo de um dado externo. no AS2 eu colocava no proprio mc em um "onClipEvent (load)" um codigo do tipo executacodigo(varExterna); mas em AS3 não tenho noção de como executar esse codigo quando o mc for iniciado, e ser executado apenas uma vez.

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza,

 

Primeiro mesmo que o seu flash aceitei esta programação, isso não é AS2 é AS1.

Agora qualto ao que você quer é bem simples. Clque com o botão direito do mouse sobre o MovieClip na sua biblioteca e acesse o linkage.

 

Depois ative "Export for ActionScript" e automaticamente "Export for in first frame" será ativa também.

 

O primeiro campo coloque um nome de acesso para o seu MC tipo "MeuMovie" beleza.

 

Agora na mesma pasta do seu fla crie um arquivo "MeuMovie.as", abra o arquivo e coloque este script:

 

package{
	   import flash.display.MovieClip;
	   public class MeuMovie extends MovieClip{
		   // Método construtor -------------
		   public functionMeuMovie(){
			   //tudo o que você colocar aqui será executado asim que o MovieClip for instanciado
		   }
	   }
   }

Aproveitando, feito isso diga adeus ao attachMovie e o duplicateMovieClip e para colocar o seu movie em qualquer lugar use:

 

// Para chamá-lo

var novo:MeuMovie = new MeuMovie ();

// Instanciamos

novo.name = "novo";

// Para colocá-lo no palco

this.addChild(novo);

 

Se colocar ele no palco manualmente (e instanciando) ele segue estas etapas automaticamente.

 

[] 's

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, encontrei uma solução parcial adicionando um Listener ao stage, ainda tenho que adaptar para fazer funcionar corretamente para o que eu preciso.

Bom, pra explicar melhor a situação, tenho no stage varias instancias de um mesmo MC. Não posso puxa-lo de outro lugar ou ler de qualquer lugar, tenho apenas que verificar quando ele é iniciado para executar um determinado codigo para alterar os MCs internamente.

A solução parcial, utiliza um Listener classe loaderInfo, porem, preciso utilizar o parametro que é passado, por exemplo no codigo:

mc1.loaderInfo.addEventListener(Event.COMPLETE, completeLoad);
function completeLoad(evt:Event):void{
// codigo
}
porem preciso alterar o mc internamente utilizando o parametro "evt", que toda vez que tento acessar qualquer coisa, mesmo que seja um .name do parametro evt, recebo uma mensagem de erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, encontrei uma solução parcial adicionando um Listener ao stage, ainda tenho que adaptar para fazer funcionar corretamente para o que eu preciso.

Bom, pra explicar melhor a situação, tenho no stage varias instancias de um mesmo MC. Não posso puxa-lo de outro lugar ou ler de qualquer lugar, tenho apenas que verificar quando ele é iniciado para executar um determinado codigo para alterar os MCs internamente.

A solução parcial, utiliza um Listener classe loaderInfo, porem, preciso utilizar o parametro que é passado, por exemplo no codigo:

mc1.loaderInfo.addEventListener(Event.COMPLETE, completeLoad);
 function completeLoad(evt:Event):void{
 // codigo
 }
porem preciso alterar o mc internamente utilizando o parametro "evt", que toda vez que tento acessar qualquer coisa, mesmo que seja um .name do parametro evt, recebo uma mensagem de erro.

Para acessar qualquer objeto associado a um evt de qualquer tipo use o target:

 

trace(evt.target)

trace(evt.target.name)

 

[] 's

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para acessar qualquer objeto associado a um evt de qualquer tipo use o target:

 

trace(evt.target)

trace(evt.target.name)

 

[] 's

sim amigo, mas coloque seu codigo "evt.target.name" no meu codigo lá em cima, você receberá uma mensagem de erro. Eu imagino que seja porque o parametro passado é apenas uma propriedade da classe DisplayObject, no caso loaderInfo, usando parents ou childs, recebo a mesma mensagem de erro.

 

o que eu quero acessar com o evt, é o objeto, e não a propriedade loaderInfo dele, entendeu ;)?

Compartilhar este post


Link para o post
Compartilhar em outros sites

É verdade, não prestei atenão que você usava o loaderInfo.

 

Pois bem de acordo com o help do Flash pois mesmo o content informa onde esta o MC e não o próprio.

 

De qualquer forma no Flash CS3 a maneira correta é atraves da classe (como já havia falado) ou então abra seu MC e coloque as ações dentro dele.

 

[] 's

Compartilhar este post


Link para o post
Compartilhar em outros sites

estou convertendo um .fla em AS2 para AS3, mas me deparei com um codigo bem simples que não sei como fazer no AS3.

tenho um mc que tem um codigo assim

 onClipEvent (load){
//ações diversas
}

digamos que a instancia fosse meuMc1, como seria o codigo?

tentei usar o ENTER FRAME mas não serve, pois quero apenas 1 execução.

tambem não posso usar COMPLETE ou Progress, pois ñ tem herança de Loader.

da classe Event como ADDED e etc tambem não funcionam.

 

Alguma sugestão?

 

Pra quem achar 2 anos depois como eu, vai a resposta

 

Vocês podem chamar a função atribuindo o parametro como nulo

 

function resizeFuncao(_evt:Event):void
{
  trace("!!!");
}
//--> quando iniciar |----------------------------------------
resizeFuncao(null);
//--> quando ampliar ou reduzir o swf |-----------------------
stage.addEventListener(Event.RESIZE, resizeFuncao);

 

beleza creuza

 

falou

 

PessoAll

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.