Ir para conteúdo

POWERED BY:

Arquivado

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

QuArEnTeNa

[Resolvido] colocar objeto onde o mouse clica AS3

Recommended Posts

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

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

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

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

 

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

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

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

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

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

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

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

×

Informação importante

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