no entiendo porque a veces usas 'this' y otras no. Creo que tienes un
problema al intentar formarte el ambito de las variables. O utilizas 'this'
para todas o para ninguna. Porque eso puede llegar a darte problemas.
Tampoco entiendo poque usas 'apply' al llamar la function. Creo que al
llamarla asi y luego utilizar 'this' dentro de ellas estas cambiando el
ambito de las variables.
De todas maneras yo suelo usar una variable local para referirme a los clips
recien creados. Asi no me preocupo por su ambito ni su ruta. Algo asi:
<code>
var local_mc = this.createEmptyMovieClip("control", 1000);
local_mc.onEnterFrame = function() {
// ...etc
}
</code>
quiz�s eso te saque del apuro.
de todas maneras yo lo haria de la siguiente manera
<code>
// Colocado en el Prototype
// Aqui quizas seria mejor hacer una subclase
// de MovieClip y luego un registerClass
// pero si no lo has hecho nunca quizas sea un
// poco lioso aunque te evitara colision de variables
MovieClip.prototype.adelante = function(){
// Las variables se almacenan en el ambito del clip
this.b = 1;
this.c = this._totalframes;
this.d = 30;
this.t = 0;
// Se asigna el evento al propio clip.
// �Porque hacerlo en otro?
this.onEnterFrame = this.__frameLoop;
}
// Igual que el anterior
MovieClip.prototype.atras = function(){
this.b = this._totalframes;
this.c = 1
this.d = 30;
this.t = 0;
this.onEnterFrame = this.__frameLoop;
}
// Las funciones de movimiento son iguales en ambos sentidos
// por eso las 2 usan el mismo prototype
MovieClip.prototype.__frameLoop = function(){
// Primero comprobar si se ha acabado
if(t==d){
// se lanza un evento, propablemente
// necesitas saber cuando ha acabado
// Se pasa el fotograma actual como argumento
// para determinar la direccion.
// Esto se asigna a la instancia directamente
this.onMoveEnd(this._currentframe);
delete onEnterFrame
}
var a = Math.ceil(Math.easeInOutCubic(t, b, c, d));
this.gotoAndStop(a);
this.t++;
}
ba.onRelease = function() {
clip_mc.onMoveEnd = function(){
trace("Fin de movimiento");
}
clip_mc.adelante();
};
bb.onRelease = function() {
clip_mc.onMoveEnd = function(){
trace("Fin de movimiento");
}
clip_mc.atras();
};
</code>
un saludo
Joseba Alonso
www.sidedev.net
<!-------------------------------
Lista ASNativos:
subscripciones/desubscripciones
http://www.sidedev.net/asnativos
-------------------------------->