Google Web after-hours

Contador en flash JSFL Traductor

Dificultad

Nunca sabremos cuando un par de sencillas líneas de código ayudarán a hacer más fácil nuestro trabajo. Un ejemplo de ello, es este script que genera aleatoriamente las posiciones _x e _y para un clip de película.

Lo interesante, es que el script puede aplicarse tanto a un clip que está situado en _root como a un clip de película contenido en otro clip de película (siempre indicando la ruta completa)

El script es el siguiente:

MovieClip.prototype.random_position = function() {
	x = (this._parent._width-this._width);
	y = (this._parent._height-this._height);
	this._x = (Math.floor(Math.random()*x));
	this._y = (Math.floor(Math.random()*y));
};

Modo de uso;

miclip_mc.random_position();

Como puedes ver, solo necesitas enviar a la función el nombre del clip de película. Como es lógico, necesitamos poner un límite a la posición que ocupará nuestro clip, es decir, impedir que este salga del área que ocupa el clip que lo contiene (incluso si se trata de _root).

La función Math.random() nos lo pone fácil:

Para establecer el límite mínimo (izquierda/superior) sabemos que random() arroja un valor entre 0 y el argumento que enviamos menos uno, p.e trace(Math.random()*8) retorna cualquier valor que esté entre 0 y 7 (argumento - 1)

En cuanto al límite máximo (derecha/inferior) nos basamos en el tamaño del clip de película contenedor width/height menos el ancho y alto del clip de película contenido.

Así pues, si tenemos un documento de 500x400 (contenedor) y utilizamos el prototypo random_position con un clip de película cuyas dimensiones son 200x200, podriamos interpretar la función como:

        x = (500-200); // -- 300
	y = 400-200); // -- 200

this._x = (cualquier número entre 0 y 300); this._y = (cuaquier numero entre 0 y 200);

Ejemplo 1

En este caso, un clip de película (rectángulo negro) contenido en un clip de película (cuadrado gris)

Ejemplo2

Un clip de película en _root

Descargar ejemplos » (803 hits)
http://www.after-hours.org/blog/2005/actionscript/protorandomposition/archivos.zip

The URI to TrackBack this entry is: http://www.after-hours.org/blog/archives/2005/09/03/mathrandom-situar-aleatoriamente-un-clip-de-pelicula/trackback/

4 Responses to 'Math.random(): Situar aleatoriamente un clip de película'

  1. Roberto Says:

    :eek: muy buen prototipo, como siempre genial, y muy util pa lo q quiero hacer :mrgreen:

  2. markshock Says:

    i have a problem!

    estoy usando el prototype de esta forma… y no me funciona:

    for(x=0;xmyMC[x].random_position();
    //myMC[x]._x = (myMC[x]._width*x);

    }

    //prototype que asigna a un MC una posición X e Y aleatorias en el escenario.
    MovieClip.prototype.random_position = function() {
    x = (this._parent._width-this._width);
    y = (this._parent._height-this._height);
    this._x = (Math.floor(Math.random()*x));
    this._y = (Math.floor(Math.random()*y));
    trace(this._x);
    };

    podrias decirme por que? no lo entiendo…

    uso flash 2004 MX.

    gracias

  3. markshock Says:

    Nada, arreglado! q friki soy… el code del prototype ha de estar por encima del FOR ya que los MC’s que ha de posicionar se atachean dinamicamente en el escenario…

    gracias y disculpa las molestias.

  4. tonilopez Says:

    Ninguna molestia Marck. :wink: