Ir para conteúdo

POWERED BY:

Arquivado

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

the_flash

Verifica se o mc tá TOTALMENTE sobre o outro mc

Recommended Posts

Seguinte, com o hitTest eu verifico se um mc "está em cima" do outroAgora, quero saber se dá pra saber se ele está totalmente em cima do outro, tipo, se tiver um pedaço fora faz uma coisa, se está totalmente em cima faz outra.Sacaram?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode verificar se os 4 pontos do mc estão dentro do outro, tipo:

 

if(mc1.hitTest(mc2._x, mc2._y, true) && mc1.hitTest(mc2._x + mc2._width, mc2._y, true)){	//ação}

Nesse exemplo só estou verificando os pontos superiores (1 e 2) segundo o esquema:

 

1 --------------- 2  |			 |  |			 |  |			 |3 --------------- 4

O ponto 1 seria a localização _x _y do mc. O ponto 2 é a localização _x mais a largura _width do mc, e a localização _y normalmente.

 

Agora só falta adicionar os outros dois pontos. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

Flw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ué, não funcionou...

 

Segue o código que usei

mc1.onRelease = mc1.onReleaseOutside = function() {	this.stopDrag();		if(mc1.hitTest(mc2._x, mc2._y, true) && mc1.hitTest(mc2._x + mc2._width, mc2._y, true)){	_root.mc1._x = 50;	_root.mc1._y = 50;		}};

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se os pontos 1 e 2 do seu mc1 estiverem encostando no mc2 deve funcionar...Tente usando endereçamento absoluto então. Aí depois você adiciona os pontos 3 e 4 no seu código.Flw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não consegui ainda...

 

Segue o código que eu to usando:

//inicio forfor (var i:Number = 1; i<=10; i++){		var mc:MovieClip = _root["mc" + i];		mc.onPress = function(){		startDrag(this);		}			mc.onRelease = mc.onReleaseOutside = function() {		this.stopDrag();				if(mc.hitTest(_root.maior._x, _root.maior._y, true) && mc.hitTest(_root.maior._x + _root.maior._width, _root.maior._y + _root.maior._height, true)){		trace("funcionou");			} // end if				}			}; //end for

Compartilhar este post


Link para o post
Compartilhar em outros sites

mc.onPress = function() {	startDrag(this);};mc.onRelease = mc.onReleaseOutside = function () {	this.stopDrag();	if (maior.hitTest(_root.mc._x, _root.mc._y, true) && maior.hitTest(_root.mc._x + _root.mc._width, _root.mc._y, true) && maior.hitTest(_root.mc._x, _root.mc._y + _root.mc._height, true) && maior.hitTest(_root.mc._x + _root.mc._width, _root.mc._y + _root.mc._height, true)) {		trace("funcionou");	}	// end if   };

Você estava verificando se o mc menor estava colidindo com todos os pontos do mc maior, e claro que isso sempre vai dar false. O que tem que ver é se o contrário: se o mc maior tem todos os pontos do mc menor dentro dele.

 

Flw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ótimo! Questão resolvida.

 

Fiz uma pequena alteração no código e vou postar caso seja útil a alguém.

//inicio forfor (var i:Number = 1; i<=10; i++){		var mc:MovieClip = _root["mc" + i];		mc.onPress = function() {		startDrag(this);		atual = this._name;	};		mc.onRelease = mc.onReleaseOutside = function () {		this.stopDrag();				if (maior.hitTest(_root[atual]._x, _root[atual]._y, true) && maior.hitTest(_root[atual]._x + _root[atual]._width, _root[atual]._y, true) && maior.hitTest(_root[atual]._x, _root[atual]._y + _root[atual]._height, true) && maior.hitTest(_root[atual]._x + _root[atual]._width, _root[atual]._y + _root[atual]._height, true)) {		trace("funcionou");		}// end if  	};		}; //end for

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.