the_flash 0 Denunciar post Postado Novembro 3, 2006 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
Antoniosp 2 Denunciar post Postado Novembro 3, 2006 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
the_flash 0 Denunciar post Postado Novembro 3, 2006 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
Antoniosp 2 Denunciar post Postado Novembro 4, 2006 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
the_flash 0 Denunciar post Postado Novembro 6, 2006 Ó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
Antoniosp 2 Denunciar post Postado Novembro 6, 2006 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
the_flash 0 Denunciar post Postado Novembro 8, 2006 É 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
Antoniosp 2 Denunciar post Postado Novembro 8, 2006 É, 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
the_flash 0 Denunciar post Postado Novembro 8, 2006 Nossa... Então se for 10 mc's são 90 ifs!Não tem algo pra ele verificar a sequencia ou verificar todos os mcs em um if só? Compartilhar este post Link para o post Compartilhar em outros sites