Comunidad de diseño web y desarrollo en internet online

Problemas con hitTest

Citar            
MensajeEscrito el 01 Jul 2009 04:57 am
Hola que tal amigos de Cristalab!!!

Pues tengo un problema con esta animacion que estoy haciendo con AS2 pues me dejaron en la escuela hacer un brazo mecanico que utileze las flechas de navegacion para moverlo y tomar con el algún elemento, asi que yo trate de hacer que tome un disco de una mesa y lo suelte sobre una tornamesa aqui coloque un movie clip llamado "msens" el cual se supone que cuando colisione con el movie clip "disco" empiese a escucharse la música, pero al hacer esto la música se sobre pone varias veces y se oye muy mal.

No se si alguno de ustedes me podria ayudar a resolver esto.
Gracias.

Este es el ejemplo clic aqui

Esta es mi codificacion:

Código ActionScript :

stop();
var suelo:Number = disco._y;
gravedad = 10;
elasticidad = 0.60;
//Aqui puse la funcion para la gravedad cuando se sulete el disco
function rebote(mc:MovieClip) {
   if (mc._y+yvel>=suelo) {
      mc._y = suelo;
      yvel = -yvel;
   } else {
      mc._y += yvel;
   }
   yvel += gravedad;
   yvel *= elasticidad;
}
onEnterFrame = function () {
// Estas son las teclas que utilizo para manipular el brazo mecanico   
   if (Key.isDown(Key.LEFT)) {
      base.giro1._rotation -= 3;
   } else if (Key.isDown(Key.RIGHT)) {
      base.giro1._rotation += 3;
   } else if (Key.isDown(Key.UP)) {
      base.giro1.giro2._rotation -= 3;
   } else if (Key.isDown(Key.DOWN)) {
      base.giro1.giro2._rotation += 3;
   } else if (Key.isDown(Key.SHIFT)) {
      base.giro1.giro2.giro3._rotation -= 3;
   } else if (Key.isDown(Key.CONTROL)) {
      base.giro1.giro2.giro3._rotation += 3;
   } else if (Key.isDown(Key.SPACE)) {
      base.giro1.giro2.giro3.play();
   }
   if (base.giro1.giro2.giro3.sensible.hitTest(disco)) {
      var punto:Object = {x:0, y:0};
      base.giro1.giro2.giro3.sensible.localToGlobal(punto);
      disco._x = punto.x;
      disco._y = punto.y;
      yvel = 0;
   } else {
      rebote(disco);
   };
//Aqui esta el problema   
//Esta es la parte de la musica
   music = _root.disco.hitTest(_root.msens);
   if (music == true){
      var sonido = new Sound();
      sonido.attachSound("music1");
      sonido.start();
      }
   }else {
      sonido.stop();
   }
      
      
};

Por musashi

14 de clabLevel



Genero:Masculino  

México D.F.

firefox
Citar            
MensajeEscrito el 01 Jul 2009 08:20 am
Así lo que estás haciendo es que cada vez que entra en el fotograma, cree un sonido nuevo y lo reproduzca si el hitTest es true.
Puedes usar una variable auxiliar para saber si el sonido ya se está reproduciendo:

Código ActionScript :

stop();
var soundIsPlaying:Boolean = false;
var sonido:Sound = new Sound();
......

   music = _root.disco.hitTest(_root.msens); 
   if ((music == true) && (soundIsPlaying == false)){ 
     soundIsPlaying = true;
     sonido.attachSound("music1"); 
     sonido.start(); 
     } 
   }else { 
     soundIsPlaying = false;
     sonido.stop(); 
   } 

También he sacado la variable sonido fuera, porque no hace falta que la crees cada vez que se vaya a reproducir

Por isidoro

Claber

498 de clabLevel

2 tutoriales

Genero:Masculino  

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.