Google Web after-hours

Contador en flash JSFL Traductor
// – prototype escalar (
// – descripción : escala un clip de pelí cula proporcionalmente
// – argumentos  : escala, vel
// – tonilopez - After-Hours
//
MovieClip.prototype.escalar = function(escala, vel) {
        // no se ha definido escala
        if (escala == undefined) {
                return;
        }
        this.escala = escala;
        // si se recibe argumento vel, aplicar, si no por defecto 3
        if (vel == undefined) {
                this.vel = 3;
        } else {
                this.vel = vel;
        }
        this.onEnterFrame = function() {
                // – ajuste exacto
                if (Math.abs(Math.round(this.escala)-Math.round(this._xscale)) == 1) {
                        this._xscale = this._yscale=this.escala;
                        delete this.onEnterFrame;
                } else {
                        this._xscale = (this.escala+this.vel*this._xscale)/(this.vel+1);
                        this._yscale = (this.escala+this.vel*this._yscale)/(this.vel+1);
                }
        };
};

// – uso

mc_miclip.escalar(escala,velocidad)

5 Responses to 'Prototype escalar I'

  1. Xavi Beumala Says:

    Hola a todos!
    Antes de nada felicitaros por el blog, lo descubrí ayer y me encantó! :-)

    Estaba mirando la clase y creo que te puedes ahorrar el if (this.escala>this._xscale).

    No sé como quedará el código en los comentarios, en cualquier caso lo pongo :P

    MovieClip.prototype.escalar = function(escala) {
    // no se ha definido escala
    if (escala == undefined) {
    return;
    }

    this.escala = escala;

    this.onEnterFrame = function() {
    // – ajuste exacto
    if (Math.abs(Math.round(this.escala)-Math.round(this._xscale)) == 1) {
    this._xscale = this._yscale = this.escala;
    delete this.onEnterFrame;
    } else {
    this._xscale = (this.escala+1+3*this._xscale)/4;
    this._yscale = (this.escala+1+3*this._yscale)/4;
    }
    };
    };

    Saludos!

  2. dani Says:

    Mu buenas. Muy chulo el proto.
    Estaria bien que además pudieras parametrizar la velocidad a la que se escala.

    MovieClip.prototype.escalar = function(escala,vel) {

    //…

    this._xscale = (this.escala+(vel*this._xscale))/(vel+1);
    this._yscale = (this.escala+(vel*this._yscale))/(vel+1);

    Yo suelo hacerlo asi, porque luego puedes jugar con distintas velocidades para ajustarlo al resultado que le quieras dar.

    Ale, un saludo :D

  3. tonilopez Says:

    Xavi: Hola Xavi, bienvenido!.
    Sobre tu correción, muy acertada , de hecho primero lo hice como dices, pero debí a tener una buena empanada mental ya que no me chutaba, de manera que tiré por la solución bestia (mal por mi).

    Dani: Pos tienes toda la razón, como siempre.

    Y como de sabios es rectificar, he cambiado el proto siguiendo vuestros consejos.

    Gracias!
    :-)

  4. Chumbi Says:

    Muy bueno, pero falla. Al aumentar un movieclip mientras se aumenta el primero, no se por que, al menos a mi me peta. Creo que deberia tener un check de si está escalando no escale otro o algo asi.

  5. tonilopez Says:

    Hola Chumbi,a mi no me falla, te pongo un ejemplo (copy paste)y me dices que tal:

    MovieClip.prototype.escalar = function(escala) {
    // no se ha definido escala
    if (escala == undefined) {
    return;
    }
    this.escala = escala;
    this.onEnterFrame = function() {
    // – ajuste exacto
    if (Math.abs(Math.round(this.escala)-Math.round(this._xscale)) == 1) {
    this._xscale = this._yscale=this.escala;
    delete this.onEnterFrame;
    } else {
    this._xscale = (this.escala+1+3*this._xscale)/4;
    this._yscale = (this.escala+1+3*this._yscale)/4;
    }
    };
    };
    clip1.onRollOver=clip2.onRollOver=function(){
    this.escalar(50)
    }