Post tageado como onLoad

Disparar eventos de botão pela timeline e Migração para o AS3

Depois que aprendi a disparar eventos pela timeline, percebi um grande ganho em performance do tempo de produção e da organização dos códigos. Ao colocar todo seu código na timeline, o controle e a organização se tornam elementos vitais no seu código.

Mas afinal, o que é “disparar eventos de botão pela timeline”?
Sabe aqueles comandos on(release) ou onClipEvent(load) que utilizávamos nos objetos no tempo jurássico do flash? Então, eles podem ser aplicados diretos na timeline a partir do AS2. E os seus MovieClips podem se comportar como botões, pra falar a verdade eu aboli o uso de botões, e aliei os recursos de movieclip com os eventos, para criar botões mais interativos e bonitos.

Como funciona isso?
É simples, na timeline você pode colocar:

meuMC.onRelease = function(){
trace(“O movieclip foi clicado”)
}

Você também pode utilizar handlers como onPress, onRelease, onLoad, onData, onDragOut, onDragOut, onDragOver, onReleaseOutside, onEnterFrame…

 Migração para o ActionScript 3
Com a brilhante idéia (que eu já aderia há algum tempo) da Adobe limar todo o código dos objetos e concentrá-los na timeline, a aplicação dos eventos na timeline ficou obrigatória.
Só que houve uma modificação, para acessar esses eventos, temos que setar um Listener (ouvinte) para chamar o evento, conforme o código abaixo:

function ativaBotao(event:MouseEvent){
 trace(“Você clicou no botão”)
}
meuMC.buttonMode = true; //ativa o cursor
meuMC.addEventListener(MouseEvent.MOUSE_UP,ativaBotao)

Para utilizar esse esquema, devemos definir uma função que recebe como parâmetro o evento do mouse (event:MouseEvent), e adicionamos um listener do clique do mouse no meuMC. Para que o MovieClip tenha aparência de botão, setamos a propriedade buttonMode como true.

, , , , , , , , , ,

Sem Comentários

Porque o loadVars não funciona?

Galera.
Sempre me deparei com problemas no carregamento de variáveis no loadVars, e vi também que é o problema de muitos, tanto que já gerou vários tópicos no fórum do iMasters. O fato é que depois que pegamos as “manhas” deste objeto, a chance de erro diminui consideravelmente, vamos dar uma olhada em algumas dicas:

Porque aquele maldito loadVars não funciona?

No caso, quando utilizamos o loadVars, temos que levar em conta a ordem em que o flash compila o código. Consideremos um arquivo com apenas um frame, com o AS abaixo:

 var myLV:LoadVars = new LoadVars();
myLV.onLoad = function(sucess:Boolean){
 if(sucess){
  meuValor = myLV.valor;
 } 
}
myLV.load(“mytxt.txt”)
trace(meuValor);
Variáveis no txt mytxt.txt:
valor=actionman

Se testar o filme, verá que o flash irá exibir na janela output o valor “undefined”, indicando que a variável não está definida. Mas porquê acontece isso?

Resposta: Devemos saber que os procedimentos da função onLoad só serão executados quando o Flash carregar todo o conteúdo do txt, então, a compilação do código é mais rápida do que o carregamento, obviamente, e é aí que ocorre o erro, pois o trace(meuVal0r) tenta exibir o conteúdo da variável antes do txt ser carregado totalmente.
Aplicando o código acima para um exemplo mais real (se carregamos alguma variável, é para alguma finalidade), o ideal é só dar um stop() neste frame, e colocar um play() dentro da função onLoad, este procedimento barra o filme enquanto o conteúdo nao é carregado, e depois dá o play quando a variável está ok, evitando que a animação seja executada com variáveis falhas.
Bom, é isso pessoal, espero que ajude muita gente.
Qq dúvida é so comentar.

, , , ,

5 Comentários