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

Responder a