the_flash 0 Denunciar post Postado Novembro 3, 2006 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
Antoniosp 2 Denunciar post Postado Novembro 3, 2006 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
the_flash 0 Denunciar post Postado Novembro 3, 2006 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
Antoniosp 2 Denunciar post Postado Novembro 3, 2006 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
the_flash 0 Denunciar post Postado Novembro 6, 2006 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
Antoniosp 2 Denunciar post Postado Novembro 6, 2006 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
the_flash 0 Denunciar post Postado Novembro 8, 2006 Ó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