VodkaCitrus 0 Denunciar post Postado Julho 13, 2010 Tenho uma linha e um MC, toda vez que essa linha colide com o MC, ele da play num som, mas enquanto eles colidem, fica dando play direto (chega até fazer eco) até o fim da colisao. Como devo proceder? OBS: Versão beta a caminho! Obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
Thiago de Oliveira Cruz 21 Denunciar post Postado Julho 13, 2010 Coloque uma variavel para fazer true or false Se já tiver dado play 1 vez a variavel vira false e não fica true até uma nova colisão Pode fazer isso com if e else Abraços Compartilhar este post Link para o post Compartilhar em outros sites
VodkaCitrus 0 Denunciar post Postado Julho 13, 2010 Coloque uma variavel para fazer true or false Se já tiver dado play 1 vez a variavel vira false e não fica true até uma nova colisão Pode fazer isso com if e else Abraços Até vai mais ainda tem um problema Essa é a minha funçao: function hitTest(e:Event):void { played = true; // Atençao aqui! if (e.target.page == s.value) { e.target.visible = true; if(e.target.hitTestObject(pt)) { if (played) { trace("Som"); e.target.gotoAndPlay (1); played = false; // } } } else { e.target.visible = false; } if (e.target.y < 519.5) { e.target.y =511.3; } else if ( e.target.y >= 519.5) { e.target.y = 550; } if (clear) { e.target.visible = false; e.target.x = -100; } } Repare que se eu remover o played = true dali de cima, o loop será evitado, mas também só tocará uma vez, pois nos próximos MCs a bollean estará false e ai impedirá de eles tocarem novamente. Já se eu deixar do jeito que ta, com o played = true lá em cima, não muda absolutamente nada, pois o loop continuará a renovar o estado da bollean. A idéia seria criar um if identificando se mudou de e.target, se por acaso tiver mudado, ai sim, a bollean poderá ser true, para que seja false novamente. e assim por diante... Como isso deveria ser feito? Ah e outra coisa, repare lá no final minha bool (clear), que é usada para "apagar" o MC do stage, mas ele siplesmente está removendo sua posiçao e deixando visibilidade falsa, eu tentei usar um removeChild mas nao funciona com o e.target, existe uma outra maneira ou terá que ser assim mesmo? Obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
Matheus Brito 12 Denunciar post Postado Julho 13, 2010 Porque você nao remove o fator da colisao, tipo se é um drag você para o drag se for um enterframe você remove o evento e ai, ele nao vai mais colidir. Mas do jeito que o thiago citou ai acima, funciona, você deve ter errado alguma coisa nesse if-else. Abs Compartilhar este post Link para o post Compartilhar em outros sites
VodkaCitrus 0 Denunciar post Postado Julho 15, 2010 mas se eu remover o listener depois, se eu quiser q o som saia novamente no mesmo MC, não vai poder sair.. eu implementei o codigo pra por um limite de tempo entre cada som, mas mesmo assim fica dando loop. Lembrando que cada faixa de audio está dentro do frame 2 do MC, no modo "EVENT". Se quiserem, me adicionem no msn para ver em primeria mão, oque está acontecendo aqui. Pois não disponibilizarei minha idéia e todo o meu código aqui no fórum, até que o projeto seja concluído.Irei limitar a visualização do fla e do swf aos 4 primeiros que me adicionarem, por questão de direitos autorais. joaoocara_11@hotmail.com function createcc () { var ccstr:CC = new CC(); ccstr.x= pop.x ; ccstr.y=pop.y; ccstr.width = sw; ccstr.height = sh; ccstr.page = s.value; addChild(ccstr); ccstr.addEventListener (MouseEvent.CLICK, clickcc); ccstr.addEventListener(Event.ENTER_FRAME, hitTest); } var i=15; function hitTest(e:Event):void { i+=1; if (e.target.page == s.value) { e.target.visible = true; if(e.target.hitTestObject(pt)) { if (played) { if (playing) { trace("Som: " + i); i=0; trace("Zero: " + i); e.target.gotoAndStop (1); e.target.gotoAndPlay (2); } } } if (i > 15) { played = true; } else if ( i <=15) { played = false; } } else { e.target.visible = false; } if (e.target.y < 519.5) { e.target.y =511.3; } else if ( e.target.y >= 519.5) { e.target.y = 550; } if (clear) { e.target.visible = false; e.target.x = -100; } } até logo. Compartilhar este post Link para o post Compartilhar em outros sites