Foros del Web » Creando para Internet » Flash y Actionscript »

Dudas y misterios con funciones

Estas en el tema de Dudas y misterios con funciones en el foro de Flash y Actionscript en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 20/05/2008, 11:42
Avatar de 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
  #2 (permalink)  
Antiguo 21/05/2008, 02:49
Avatar de Mahalo  
Fecha de Ingreso: julio-2004
Ubicación: Mallorca (Illes Balears)
Mensajes: 1.121
Antigüedad: 19 años, 9 meses
Puntos: 12
Respuesta: Dudas y misterios con funciones

Hola!
Del tema move decir que sí es una palabra reservada por AS con lo cual no es recomendable su uso de otra forma para la que está reservada. Lo de llamarlo sin paréntesis es porque es una comparación entre funciones. El evento onEnterFrame se invoca mediante una función. Se puede usar así:
Código:
this.onEnterFrame = function() {
   trace("evento onEnterFrame");
}
O así:
Código:
this.onEnterFrame = funcion;
function funcion() {
   trace("evento onEnterFrame");
}
Lo mismo puedes hacer con otros eventos como los de los botones:
Código:
boton.onPress = presionado;
function presionado() {
   trace("presionado");
}
Y lo del attachMovie es muy diferente a createEmptyMovieClip. El primero instancia un objeto de la biblioteca en el escenario. El segundo, crea un mc vacío en el escenario.
Saludos!
__________________
Los ignorantes se empeñan en enseñar. Los sabios en aprender.
SourceForge
  #3 (permalink)  
Antiguo 29/05/2008, 07:18
Avatar de ArturoLV  
Fecha de Ingreso: noviembre-2005
Ubicación: omnipotencia
Mensajes: 146
Antigüedad: 18 años, 5 meses
Puntos: 0
Respuesta: Dudas y misterios con funciones

mira que recién he tenido tiempo de revisar el foro, muchas gracias por tu tiempo

me sigue quedando la duda sobre el move, como es q lo usan como si fuese una función propia cuando es una palabra reservada
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:48.