Ir para conteúdo

POWERED BY:

Arquivado

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

the_flash

startDrag e stopDrag

Recommended Posts

Seguinte, eu tenho vários mc no palco, e todos eles estão com startDrag e stopDrag.startDrag no onPress e stopDrag no onRelease e onReleaseOutside.Ou seja, eu os arrasto clicando e solto no palco soltando o click.O que eu quero é o seguinte:Que fique impossivel um mc ficar sobre o outro no palco, mas da seguinte formaQuando eu estou arrastando um mc e ele encosta em outro, já dê um stopDrag e ele fique por ali mesmo, sem ter que soltar o click.Vejam se ficou claro a minha idéia.Desde já, agradeço a todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode fazer verificações com o hitTest, por exemplo:

 

mc.onMouseMove = function(){  if(this.hitTest(_root.mc2)){	this.stopDrag();  }}

Flw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dá-lhe Antoniosp!!!

 

Funcionou certinho!

 

Só que depois que ele encosta eu não consigo mais arrastar.

Sugestões?

 

 

[edit]

Opa, arrumei um jeito pra esse último problema:

 

mc.onMouseMove = function(){  if(this.hitTest(_root.mc2)){	this.stopDrag();	this._x = this._x - 1;  }}

Valeu!

 

[edit 2]

Durou pouco a alegria.

Essa solução que eu arrumei serviu como gambiarra.

 

Funciona somente se arrastar o mc da esquerda para a direita... ao contrario não funciona.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Usando umas vars:

 

mc.onPress = function() {	this.startDrag();		//o 'b' vai ser true ou false	this.b = this.hitTest(_root.mc2);};mc.onRelease = function() {	this.stopDrag();};mc.onMouseMove = function() {	//Se tiver encostando e o b for false:	if (this.hitTest(_root.mc2) && !this.b) {		this.stopDrag();		//Se não tiver encostando	} else if (!this.hitTest(_root.mc2)) {		this.b = false;	}};
Pense no 'b' como: se quando clicou no mc, ele estava em contato com o mc2 ou não.

 

Abraço ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ótimo, funcionou...

 

Mas com a função pra vários mc's não consegui

 

Segue:

// inicio forfor (var i:Number = 1; i<=10; i++) {		var mc:MovieClip = _root["mc" + i];mc.onPress = function() {	this.startDrag();		//o 'b' vai ser true ou false	this.b = this.hitTest(mc);};mc.onRelease = function() {	this.stopDrag();};mc.onMouseMove = function() {	//Se tiver encostando e o b for false:	if (this.hitTest(mc) && !this.b) {		this.stopDrag();		//Se não tiver encostando	} else if (!this.hitTest(mc)) {		this.b = false;	}};} //end for

Compartilhar este post


Link para o post
Compartilhar em outros sites

Será que não é porque você está usando a variável com o mesmo nome do mc do hit?

 

var mc:MovieClip = _root["mc" + i];...this.b = this.hitTest(mc);

Flw

Compartilhar este post


Link para o post
Compartilhar em outros sites

É que são vários mc's e se algum deles colidir com outro, pare de se mover.

 

Então:

this.b = this.hitTest(mc);

Com:

this.b = this.hitTest(_root.mc2);
Funciona perfeito, mas ai funciona só no mc2

Compartilhar este post


Link para o post
Compartilhar em outros sites

É, mas assim como está fazendo você só vai verificar com o último mc que der no loop.Pra dar certo tem que fazer vários hitTest mesmo.Flw

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.