Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/05/2008, 11:42
Avatar de ArturoLV
ArturoLV
 
Fecha de Ingreso: noviembre-2005
Ubicación: omnipotencia
Mensajes: 146
Antigüedad: 18 años, 5 meses
Puntos: 0
Dudas y misterios con funciones

Holas, estuve tratando de entender un código

hace q aparezcan bolitas q jala de la biblioteca, cuales se mueve en diagonal colisionando con el borde y cuando colisionan entre ellas se ponen rojas


al analizarlo me tope con unas cosas raras en las funciones

el código es éste

Código:
this._lockroot = true;
var SW:Number = 530;
var SH:Number = 300;

var numOfBalls:Number = 15;
var mcBall:MovieClip;

for(var i:Number = 0; i < numOfBalls; i++){
	mcBall = _root.attachMovie("ball_mc", "ball"+i, _root.getNextHighestDepth());
	mcBall._x = Math.random() * SW;
	mcBall._y = Math.random() * SH;
	mcBall._xscale = mcBall._yscale = Math.random()*200;
	mcBall.vx = (Math.random()*10) - 5;
	mcBall.vy = (Math.random()*10) - 5;
}

_root.onEnterFrame = move;

function move():Void{
	for(var i:Number = 0; i < numOfBalls; i++){
	mcBall = _root["ball"+i];
	mcBall._x += mcBall.vx;
	mcBall._y += mcBall.vy;
	checkWallCollisions();
	
	}
	checkBallCollisions();
  
}

function checkWallCollisions():Void{
	if (mcBall._x + mcBall._width / 2 > SW) {
		mcBall._x = SW-mcBall._width / 2;
		mcBall.vx *= -.9;
	} else if (mcBall._x - mcBall._width / 2 < 0) {
		mcBall._x = 0+ mcBall._width / 2;
		mcBall.vx *= -.9;
	}
	if (mcBall._y + mcBall._width / 2 > SH) {
		mcBall._y = SH-mcBall._width / 2;
		mcBall.vy *= -.9;
	} else if (mcBall._y - mcBall._width / 2 < 0) {
		mcBall._y = 0+mcBall._width / 2;
		mcBall.vy *= -.9;
	}
}

function checkBallCollisions():Void{
	for(var k:Number=0; k<numOfBalls-1; k++){
		var mcBallA:MovieClip = _root["ball"+k];
		  for(var j=k+1; j<numOfBalls; j++){
		  var mcBallB:MovieClip = _root["ball"+j];  
			if(mcBallB.hitTest(mcBallA)){
				            // trace(_root["ball"+i]);
										//trace(_root["ball"+j]); 
							   mcBallA.play();
							   mcBallB.play();
							   }  
			  
			  
			  }
		}
}

Lo raro es que la función move no devuelve parámetros según veo el VOID, esta función es llamada desde código simplemente con su nombre sin incluir los paréntesis que se supone se incluyen en las funciones así no lleven parámetros

tal cual veo en las funciones checkWallCollisions() y checkBallCollisions(); si son llamadas con paréntesis

ademas la función "move" en el cogido se pone en azul como si fuese palabra reservada, q no es acaso una función propia?


luego lineas mas arriba, porque igualan esto

Código:
mcBall = _root.attachMovie("ball_mc", "ball"+i, _root.getNextHighestDepth());
si hago attachmovie root es igual q _root.createEmptyMovieClip? acaso no es que se hace un attach movie otra vez se reemplaza el contenido del movie clip actual?

esas dos cosas me tiene pensando pues no las entiendo
graciasss