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
-------------------------------->