QuArEnTeNa 0 Denunciar post Postado Dezembro 30, 2009 Boa tarde galera, To precisando que o objeto fique aonde eu clicar com o mouse, fiz da seguinte forma, mas ele fica meio perdido na tela. function onMoveTeste(event:MouseEvent):void { mcTeste.x = mouseX; mcTeste.y = mouseY; } Abraços; Compartilhar este post Link para o post Compartilhar em outros sites
Matheus Brito 12 Denunciar post Postado Dezembro 31, 2009 Voce quer que clique e ele va pra onde clicou? Só isso? stage.addEventListener("click", teste); var dx:Number; var dy:Number ; function teste(e:Event):void{ dx = mouseX; dy = mouseY; box.x = dx; box.y = dy; } Abs Compartilhar este post Link para o post Compartilhar em outros sites
Elektra 102 Denunciar post Postado Dezembro 31, 2009 Voce quer que clique e ele va pra onde clicou? Só isso? stage.addEventListener("click", teste); var dx:Number; var dy:Number ; function teste(e:Event):void{ dx = mouseX; dy = mouseY; box.x = dx; box.y = dy; } Abs Se necessário adiciono um novo tópico, mas apenas por curiosidade: é possível adaptar este código para o deslocamento do mc box com Tween (AS3)? ou seja, ao clicar ou arrastar o mouse para outra posição, o mc box se mover suavemente até o local? Abs Compartilhar este post Link para o post Compartilhar em outros sites
Matheus Brito 12 Denunciar post Postado Dezembro 31, 2009 É possível sim elektra.Ate melhorar esse código. Abs Compartilhar este post Link para o post Compartilhar em outros sites
QuArEnTeNa 0 Denunciar post Postado Dezembro 31, 2009 Voce quer que clique e ele va pra onde clicou? Só isso? stage.addEventListener("click", teste); var dx:Number; var dy:Number ; function teste(e:Event):void{ dx = mouseX; dy = mouseY; box.x = dx; box.y = dy; } Abs Olá, esse código funciona mas quando o movieclip não está dentro de outro. Pois meu movieclip está dentro de outro ele se perde na coordenada pois parece que ele fica restrito ao tamanho do movieclip principal. Será que tem como mudar esse código para resolver esse problema ? Muito Obrigado, um grande abraço. Compartilhar este post Link para o post Compartilhar em outros sites
Foxn 3 Denunciar post Postado Dezembro 31, 2009 Voce quer que clique e ele va pra onde clicou? Só isso? stage.addEventListener("click", teste); var dx:Number; var dy:Number ; function teste(e:Event):void{ dx = mouseX; dy = mouseY; box.x = dx; box.y = dy; } Abs Olá, esse código funciona mas quando o movieclip não está dentro de outro. Pois meu movieclip está dentro de outro ele se perde na coordenada pois parece que ele fica restrito ao tamanho do movieclip principal. Será que tem como mudar esse código para resolver esse problema ? Muito Obrigado, um grande abraço. Este é um exemplo mas como já foi dito sempre pode ser melhorado e vai depender do que você quer fazer. // Importando as classes para a animação import fl.transitions.Tween; import fl.transitions.easing.*; // Desenhando um objeto que será movido var objeto:Sprite = new Sprite(); objeto.graphics.beginFill(0x000000); objeto.graphics.drawRect(-20,-20,40,40); objeto.graphics.endFill(); addChild(objeto); objeto.x = 40; objeto.y = 40; // Criando os Tween que irão mover o objeto var posX:Tween =new Tween(objeto, "x", Elastic.easeOut, objeto.x, objeto.x, 1.5, true); var posY:Tween =new Tween(objeto, "y", Elastic.easeOut, objeto.y, objeto.y, 1.5, true); var MoverAoClicar:Function = function($evento:MouseEvent):void { // Parando a aminação caso já esteja sendo executada posX.stop(); posY.stop(); // Redefinindo a posição inicial e final do objeto posX.begin = objeto.x; posX.finish = $evento.stageX; posY.begin = objeto.y; posY.finish = $evento.stageY; // Reiniciando a animação posX.start(); posY.start(); } // Monitorando o click no stage stage.addEventListener(MouseEvent.CLICK,MoverAoClicar); []'s Compartilhar este post Link para o post Compartilhar em outros sites
QuArEnTeNa 0 Denunciar post Postado Janeiro 1, 2010 Olá, acho que não comprendeu meu problema, é que o movieclip está dentro de outro, fazendo com que ele se perda na coordenada, pois ele assumi o palco como o movieclip principal que é menor que o Palco. Por isso quando clica com mouse no Palco a coordenada vai correta, mas a posição do objeto assume dentro do espaço ocupado pelo movieclip que ele está dentro. Entendeu ? Muito obrigado pelos códigos irá ajudar muito tive dando uma olhada, mas preciso resolver esse problema também. Um grande abraço. Compartilhar este post Link para o post Compartilhar em outros sites
Foxn 3 Denunciar post Postado Janeiro 1, 2010 Olá, acho que não comprendeu meu problema, é que o movieclip está dentro de outro, fazendo com que ele se perda na coordenada, pois ele assumi o palco como o movieclip principal que é menor que o Palco. Por isso quando clica com mouse no Palco a coordenada vai correta, mas a posição do objeto assume dentro do espaço ocupado pelo movieclip que ele está dentro. Entendeu ? Muito obrigado pelos códigos irá ajudar muito tive dando uma olhada, mas preciso resolver esse problema também. Um grande abraço. É simples, só usar o globalToLocal e o localToGlobal (se necessário) para fazer esta conversão: // Importando as classes para a animação import fl.transitions.Tween; import fl.transitions.easing.*; // Desenhando um objeto que será movido var objeto:Sprite = new Sprite(); objeto.graphics.beginFill(0x000000); objeto.graphics.drawRect(-20,-20,40,40); objeto.graphics.endFill(); addChild(objeto); objeto.x = 40; objeto.y = 40; // Criando os Tween que irão mover o objeto var posX:Tween =new Tween(objeto, "x", Elastic.easeOut, objeto.x, objeto.x, 1.5, true); var posY:Tween =new Tween(objeto, "y", Elastic.easeOut, objeto.y, objeto.y, 1.5, true); var MoverAoClicar:Function = function($evento:MouseEvent):void { // Convertendo coordenadas var $pos:Point = new Point(); $pos.x = $evento.stageX; $pos.y = $evento.stageY; objeto.parent.globalToLocal($pos); // Parando a aminação caso já esteja sendo executada posX.stop(); posY.stop(); // Redefinindo a posição inicial e final do objeto posX.begin = objeto.x; posX.finish = $pos.x; posY.begin = objeto.y; posY.finish = $pos.y; // Reiniciando a animação posX.start(); posY.start(); } // Monitorando o click no stage stage.addEventListener(MouseEvent.CLICK,MoverAoClicar); []'s Compartilhar este post Link para o post Compartilhar em outros sites
QuArEnTeNa 0 Denunciar post Postado Janeiro 2, 2010 Usei globalToLocal e o localToGlobal, e mesmo assim o mc se limita ao tamanho de seu mc self. stage.addEventListener("click", teste); var dx:Number; var dy:Number ; function teste(e:Event):void{ dx = mouseX; dy = mouseY; box.x = dx; box.y = dy; } Esse código funciona perfeitamente, mas o mc não pode estar dentro de outro, entende ? pois senão ele fica limitado ao tamanho do mesmo e se perde nas coordenadas, alguém sabe como corrigir isso sem ter que retirar o mc de dentro do outro ? Abraços. Obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
Elektra 102 Denunciar post Postado Janeiro 2, 2010 Porque não publica um fla para que os colegas possam analisar a sua necessidade. Isso evita retrabalho. Abs. Compartilhar este post Link para o post Compartilhar em outros sites
QuArEnTeNa 0 Denunciar post Postado Janeiro 2, 2010 Concordo Elektra, devia ter feito isso já. Abaixo link para download do .fla exemplificando meu problema. http://www.mandamais.com.br/download/4l7q21201014346'> http://www.mandamais.com.br/download/4l7q21201014346 Obrigado Compartilhar este post Link para o post Compartilhar em outros sites
Foxn 3 Denunciar post Postado Janeiro 2, 2010 Boa tarde, Quando trabalhar com CLICK procure usar um evento mais adequado como o MouseEvent, isso permite que você receba informações uteis como o stageY e stageX que passa a posição do click em relação ao stage. Isso vai evitar de você ter de fazer alguns calculos não necessários alem de permitir que você aplique o ouvinte onde quiser e não somente no stage sem ter de recalcular tudo de novo. stage.addEventListener(MouseEvent.CLICK, moveComClique); function moveComClique(e:MouseEvent):void { var $pos:Point = new Point(); $pos.x = e.stageX; $pos.y = e.stageY; $pos = mcPai.globalToLocal($pos); mcPai.mcFilho.x = $pos.x; mcPai.mcFilho.y = $pos.y; } []'s Compartilhar este post Link para o post Compartilhar em outros sites
QuArEnTeNa 0 Denunciar post Postado Janeiro 2, 2010 Boa tarde, Quando trabalhar com CLICK procure usar um evento mais adequado como o MouseEvent, isso permite que você receba informações uteis como o stageY e stageX que passa a posição do click em relação ao stage. Isso vai evitar de você ter de fazer alguns calculos não necessários alem de permitir que você aplique o ouvinte onde quiser e não somente no stage sem ter de recalcular tudo de novo. stage.addEventListener(MouseEvent.CLICK, moveComClique); function moveComClique(e:MouseEvent):void { var $pos:Point = new Point(); $pos.x = e.stageX; $pos.y = e.stageY; $pos = mcPai.globalToLocal($pos); mcPai.mcFilho.x = $pos.x; mcPai.mcFilho.y = $pos.y; } []'s Aee funcinou Foxn, muito obrigado pela sua ajuda e paciência. Um grande abraço à todos. Compartilhar este post Link para o post Compartilhar em outros sites
Elektra 102 Denunciar post Postado Janeiro 2, 2010 Também agradeço Foxn, aprendi o que ainda não sabia. Valeu kisuke. [ []']' Compartilhar este post Link para o post Compartilhar em outros sites