Comunidad de diseño web y desarrollo en internet online

Contar MovieClips que aparecen en pantalla y poner un límite

Citar            
MensajeEscrito el 03 Dic 2008 07:46 pm
Hola a todos!

Estoy creando un juego de una "nave que recoge bolitas", y tengo un problema con el número de bolas que aparecen en pantalla. Quiero establecer un límite.

Un contador hace que aparezca una bola cada 50 frames, y luego se reinicia. Las bolas van numerándose:

Código :

function onEnterFrame()
{   
       redballTimer += 1;

       if(redballTimer > 50) 
       {
         redballTimer = 0;
         var redball = _root.attachMovie("RedBall", "RedBall" + _root.getNextHighestDepth(),        
                       _root.getNextHighestDepth ());
         redballs.push(redball);
       }
}


Cuando tocas las bolas con el movieclip "ship", se desplazan a una esquina. De modo que van acumulándose en pantalla:

Código :

      if(this.hitTest(_root.ship))
      {      
            _x = Math.random () *40 + 15;
            _y = Math.random () *40 + 245;
            speed = 0;
      }


¿Cómo hago que, cuando haya 5 clips "RedBall" en pantalla, el contador ("redballTimer") se pare para que no aparezcan más bolas?

Me resulta un poco complicado de explicar. Si no se entiende algo, puedo adjuntar el .fla y los archivos de AS.

Gracias por adelantado.

Por NoEspace

11 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 03 Dic 2008 09:53 pm
¿Deseas hacer una función que haga solamente 5 bolas?
Si no es esto debes explicar mejor lo que deseas hacer.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 03 Dic 2008 10:35 pm
O una función que cree sólo 5 bolas, o una función que detenga el contador (redballTimer) cuando haya 5 bolas en la película. Sería algo así, pero no sé muy bien cómo:

Código :

function noMoreBalls () 
       {
       redballTimer -=1;
       }


Así, el contador es negativo y no aparecen más bolas. Ahora, ¿cómo hago que esa función se active si y sólo si hay ya 5 bolas en la películas?

Por NoEspace

11 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 04 Dic 2008 10:47 am
Creo que esto te puede servir, es mejor utilizar en este caso un setInterval en vez de un onEnterFrame, ya que es una función que se va a ejecutar cada x segundos, por otro lado lo mejor sería contar las bolas y depende de la cantidad de estas que haya ejecutar la función o no.

Código ActionScript :

//---Función de crear las bolas
function creaBola():Void{
   
   var numeroBolas:Number = cuentaBolas(this);
   
   //---Solo crear las bolas si hay menos de 5 bolas en el escenario
   if(numeroBolas < 5){
   
      var depth:Number = this.getNextHighestDepth();
      
      var posX:Number = Math.round(Math.random() * Stage.width);
      var posY:Number = Math.round(Math.random() * Stage.height);
      
      var redBall:MovieClip = this.attachMovie("RedBall", "RedBall" + depth, depth, {_x:posX, _y:posY});
      redballs.push(redball);
   
   }
   
}

//---Función de contar las bolas
function cuentaBolas(scope:MovieClip):Number{
   
   var numero:Number = 0;
   
   for(var obj in scope){
      
      if(scope[obj] instanceof MovieClip && obj.indexOf("RedBall") > -1){
         
         numero++;
         
      }
      
   }
   
   return numero;
   
}

//---Ejecutar la función creabolas cada 5 segundos
var timer:Number = setInterval(this, "creaBola", 5000);

//---Ejecutar la función creabolas por primera vez
creaBola();

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 04 Dic 2008 04:04 pm
Wow. Es perfecto, elchininet. Muchísimas gracias :)

Por NoEspace

11 de clabLevel



Genero:Masculino  

firefox

 

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