
09/02/2003 - Artigo Arrays II
20/01/2003 - Onde você está ?
09/01/2003 - Funções : localToglobal() e globalToLocal()
23/06/2007 - Classe MovieClipLoader( ) : Como usá-lo ?
07/12/2003 - Dando poderes ao Flash
09/01/2003 - Como arredondar os cantos de uma foto
22/03/2006 - Quebrar Texto de Parágrafo
26/02/2007 - Texto para a Web
07/02/2003 - Criando um formulário de contatos com CDONTS
09/01/2003 - Segurança em programação PHP
07/12/2003 - Action Script 2.0 ( Primeira Parte )
09/01/2003 - Integração Flash com banco de dados
29/01/2003 - Marketing Viral
07/02/2003 - Código para exibir o Beat - o horário mundial da Internet
Leituras: 6138 -
Funções : localToglobal() e globalToLocal()
Por Ken Awamura
INTRODUÇÃOAo criarmos / declararmos um Objeto no Flash, podemos considerar propriedades como por exemplo, a posição X e Y do mouse como sendo Locais às coordenadas de um movieClip ou globais em relação às coordenadas do Stage e com o uso das funções localToGlobal() e globalToLocal() podemos definir, em tempo de execução, se uma variável é local ou global.
--------------------------------------------------------------------------------NESTE TUTORIAL
Criação de Objetos
Funções: localToGlobal(), globalToLocal(), object() e updateAfterEvent(mouseMove)
Output de resultados em um Dynamic textField
Utilização do Debugger--------------------------------------------------------------------------------
IDÉIA GERAL DO TUTORIAL
Criação de um objeto chamado 'p' com o qual iremos alternar suas propriedades X e Y em relação à um movieClip chamado 'mc' e em relação às coordenadas do Stage principal.
O movieClip 'mc' é um quadrado localizado no centro do Stage com as respectivas coordenadas relativas ao Stage : 200,150
O Stage possui 400x300 pixel e sua origem 0,0 está no canto superior esquerdo
O objeto 'p' é criado no evento onClipEvent(mouseMove) do movieClip 'mc', portanto 'p' é um objeto interno ao movieClip 'mc'
--------------------------------------------------------------------------------ETAPA 1 : OS COMPONENTES
Crie 2 layers : as e bg e na layer bg faça o seguinte :
Crie um movieClip com as seguintes dimensões : quadrado com 10,10 pixel
Coloque uma instãncia deste movieClip no centro do stage e nomeie 'mc' no painel Instance
Crie um campo texto do tipo Dynamic textField e nomeie 'out' no painel Text Options
Ative o seu Debugger no menu File / Publish Settings / Flash / Debbuging Permitted
--------------------------------------------------------------------------------ETAPA 02 : O ACTIONSCRIPT
Selecione o movieClip 'mc' no Stage e abra o painel Actions. A idéia é criarmos um objeto chamado 'p' no evento mouseMove to movieClip. Este objeto receberá as coordenadas do mouse _xmouse e _ymouse, portanto as coordenadas x e y de 'p' serão necessariamente Locais ao movieClip 'mc'. Se quiséssemos que as coordenadas x e y de 'p' fossem Globais ao Stage teríamos que apontar _xmouse e _ymouse para o _root, i é : _root._xmouse e _root._ymouse. Porém podemos mudar esta relação com as funções localToGlobal() e globalToLocal(), que é o nosso objetivo.
Insira o seguinte actionScript :
onClipEvent(mouseMove)
{
p = new Object();
p.x = Math.round(_xmouse);
p.y = Math.round(_ymouse);//this.localToGlobal(p);
_root.out = p.x + " : " + p.y;
updateAfterEvent(mouseMove);
}
--------------------------------------------------------------------------------ETAPA 03 : DETALHANDO O ACTIONSCRIPT
p = new Object();
p.x = Math.round(_xmouse);
p.y = Math.round(_ymouse);No evento mouseMove do movieClip é criado o objeto 'p' através do constructor new object();
Este objeto terá coordenadas x e y de acordo com as coordenadas do mouse_root.out = p.x + " : " + p.y;
updateAfterEvent(mouseMove);O textField 'out' que está no stage fará o output das coordenadas x e y do objeto 'p'.
Teste o filme e note que à princípio, ao movimentarmos o mouse, as coordenadas de 'p' são relativas ao movieClip ´mc', i é, ´mc' é a origem do objeto 'p'. Isto pode ser verificado no textField 'out' e via o Debugger.
--------------------------------------------------------------------------------ETAPA 04. CONVERTENDO COORDENADAS LOCAIS PARA GLOBAIS
Com a função localToGlobal podemos agora converter as coordenadas x e y do objeto 'p' que à princípio são Locais para Globais.
Tire o comentário do código acima //this.localToGlobal(p); e verifique que agora ao testar seu filme as coordenadas de ´p' são globais em relação ao 0,0 do stage. Isto pode ser verificado no textField 'out' no Stage. Já no Debugger verifique que o objeto 'p' mantém suas coordenadas Locais, pois como já foi frisado antes sua declaração inicial foi Local : p.x = Math.round(_xmouse); e p.y = Math.round(_ymouse)
onClipEvent(mouseMove)
{
p = new Object();
p.x = Math.round(_xmouse);
p.y = Math.round(_ymouse);this.localToGlobal(p);
_root.out = p.x + " : " + p.y;
updateAfterEvent(mouseMove);
}
--------------------------------------------------------------------------------EXTRA
Experimente fazer o inverso, i é, declarando p.x e p.y como Global e utilizando a função inversa globalToLocal();
onClipEvent(mouseMove)
{
p = new Object();
p.x = Math.round(_root._xmouse);
p.y = Math.round(_root._ymouse);this.globalToLocal(p);
_root.out = p.x + " : " + p.y;
updateAfterEvent(mouseMove);
}
--------------------------------------------------------------------------------DOWNLOAD DO .FLA
Faça o download do arquivo : aqui
Grande abraço,
[ ]´s
Ken Awamura
--------------------------
Ken Awamura tem graduação em Bacharelado em Informática e iniciou sua carreira na área de análise de sistemas porém em 1998 decidiu se especializar em Desenvolvimento para a Web, especialmente com o uso do software Macromedia Flash que começou a usar na sua versão 3. Atualmente dedica-se mais na área de programação com actionScript e na integração do Flash com soluções externas tanto client como server side.