
division de la pantalla
Más específicamente, la idea es que la pantalla se encuentre dividida en cuadrantes y en una zona central, también dividida en cuadrantes. Cada cierto tiempo se añade el movieclip al esenario con la condición de que un numero aleatorio entre 0 y 25 sea cero, lo que le da una frecuencia inicial buena, ni muy lenta ni muy rápida. Mediante la función rango, que me da un entero entre cierta cantidad de numeros, se establece aleatoremente el punto de partida, de manera que se escoje de cual de las cuatro esquinas se parte, y una vez más mediante rango se determina cual de las coordenadas (x o y) será cero, mientras que la otra será un número aleatorio que no saque al movieclip de su cuadrante inicial. Con esto no tengo problema. Luego se supone que desde el punto de partida el movieclip avance hacia un punto aleatorio de su respectivo cuadrante central, esto lo hago con onEnterFrame para que 24 veces por segundo sume 10 a las coordenadas hasta llegar al destino fijado por las variables fin_x y fin_y, que es donde se me dan los problemas, pues el movieclip muestra un extraño rebote en algunos casos, al parecer desapareciendo antes de lleagr a su destino en el cuadrante central.
Una vez en su destino aleatorio en el cuadrante central se escoje mediante rango a cual de los tres cuadrentes contiguos se desplazará, y desde ahí se desplazará por su nuevo cuadrante hasta salir de pantalla y desaparecer. Esto lo hago con sumas y restas (+= y -=) aplicadas a las coordenadas del movieclip, de manera que salga en un movimiento diagonal cuya inclinación sería aleatoria.
Por ahora estoy estableciendo una especie de código base en el que el movieclip simplemente se desplace desde la esquina superior izquierda con y=0 y una coordenada x aleatoria hasta un punto aleatorio en el cuadrante central superior iquierdo. Una vez ahí se su posición en x aumenta con onEnterFrame de la misma forma que avanzó antes, hasta pasar al cuadrante superior derecho, y tras salir de éste iniciar un movimiento diagonal hacia la esquina superior derecha que lo saque de la pantalla, nuevamente alterando sus coordenadas con onEnterFrame. La idea mía es que una vez logre que el movieclip se mueva de esta manera solo bastará con cambiar el código para que el moveclip se mueva desde y hacia otros cuadrantes de manera aleatoria. Pero cuando algunos movieclips logran llegar al cuadrante central y se desplazan al dercho, en vez de realizar un movimiento diagonal para salir me falla el usar un -=10 (por ejemplo) en la coordenada, lo que supuestamente debería hacer subir el moviecip, pero este sólo desplaza horizontalmente a la derecha.
Espero haberme hecho etender y que alguien sepa que podría hacer para que los movieclips se muevan en la forma que quiero. Gracias por leer este largo post, y este es el código para que entiendan mejor (espero):
var vel:Number = rango(0, 10);
this.onEnterFrame = function() {
if (rango(0, 25) == 0) {
var thisMC:MovieClip = this.attachMovie("109", "avion", _global.cDepth);
_global.cDepth++;
var tamaño = rango(30, 50);
var fin_x = rango(241, 320);
var fin_y = rango(163, 240);
thisMC._xscale = tamaño;
thisMC._yscale = tamaño;
thisMC._x = rango(0, 230);
thisMC._y = 0;
thisMC.onEnterFrame = function() {
this._x += 10;
this._y += 10;
if (this._x>fin_x) {
this._x = fin_x;
}
if (this._y>fin_y) {
this._y = fin_y;
}
if(this._x==fin_x && this._y==fin_y){
this._x +=10;
if(this._x>400){
this._x += vel;
this._y -= 10;
}
}
};
}
};
function rango(minNum:Number, maxNum:Number):Number {
return (Math.floor(Math.random()*(maxNum-minNum+1))+minNum);
}