El problema lo tienes por la forma en la que tienes de activar lo eventos.
Te propongo otra solucion:

<code>

// clip_mc es la intancia sobre la que quieres el efecto.
clip_mc.iniciar = function(){
    this.alpha = 10;
    this.x = 3;
    this.onEnterFrame = this.__frameLoop;
}
clip_mc.parar = function(){
    delete this.onEnterFrame;
}
clip_mc.__frameLoop = function(){
 this._alpha += (this.alpha - this._alpha)/4;
 this._x     += (this.x - this._x)/4;
 this._width += (500 - this._width)/4;
 if(this._x == 3) {
  this._x += (this._x + 367);
 }
}
</code>

Basicamente se a�aden 3 metodos al clip en concreto:

1) iniciar():
Iniciaria el efecto. Basicamente solo inicia las variables y asigna el
evento onEnterFrame del clip al metodo frameLoop.

2)parar(): Pararia el efecto. Borra el evento onEnterFrame

3)__frameLoop(): Metodo privado que se usa para realizar el efecto. Este
metodo es asignado y borrado del evento por los metodos iniciar() y parar().

Luego para usarlo solo debes hacer clip.iniciar() o clip.parar(). Es una
aproximacion mas OO que usar onClipEvent. Y te permite hacer cosas como
asignar dinamicamente un evento. Cuando utilizas onClipEvent no tienes
manera de sustituir el codigo asignado al evento. Como mucho podras meter
una condicional y ejecutar codigo o no, pero el onEnterFrame siempre se
ejecutara. Si lo haces utilizando el sistema de callbacks (clip.onEnterFrame
= funcion) podras eliminar el evento cuando quieras y liberar el tiempo de
proceso que requieren. Si adem�s quieres que esta funcionalidad la tengan
todos los movieclips solo tienes que definirlo en el prototype (cambiar
'clip_mc' por 'MovieClip.prototype' en el codigo de arriba)

un saludo

Joseba Alonso
www.sidedev.net


----- Original Message ----- 
From: "Ivan Rodriguez" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Monday, October 27, 2003 4:11 PM
Subject: [ASNativos] Detener un MC


Buenas, tenog el sigueinte codigo asociado  a un MC:

onClipEvent(load) {
 alpha = 10;
 x      = 3;
}
onClipEvent(enterFrame) {
 _alpha += (alpha - _alpha)/4;
 _x     += (x - _x)/4;
 _width += (500 - _width)/4;
 if(_x == 3) {
  _x += (_x + 367);
 }
}

El caso es que quiero que tan solo se realize una vez el efecto, y no cada
vez que llege al final, no hay algo como exit; o break; .... para pararlo?�
por que con this.stop() no me funciona :-(

Muchas gracias

Iv�n Rodriguez Espada
_________________________
ALAPLAYA.COM
http://www.alaplaya.com
[EMAIL PROTECTED]
<!-------------------------------
Lista ASNativos:
subscripciones/desubscripciones
http://www.sidedev.net/asnativos
-------------------------------->

<!-------------------------------
Lista ASNativos:
subscripciones/desubscripciones
http://www.sidedev.net/asnativos
-------------------------------->

Responder a