KineticJS: sprites en movimiento que causan un error desconocido

Estoy tratando de escribir código en KineticJS para mover la unidad representada por un grupo que contiene su sprite (es un grupo ya que podría querer agregar más cosas a la representación gráfica).

El código de la función de movimiento es:

this.moveTo = function(x,y) {
distance = Math.sqrt((this.shape.getX() - x)*(this.shape.getX() - x)+(this.shape.getY() - y)*(this.shape.getY() - y));
time = distance / MOVEMENT_SPEED;
var sprite = this.sprite;
this.sprite.setAnimation('walkDown'); //TODO: change
this.group.transitionTo({
        x: x,
        y: y,
        duration: time,
        easing: "ease-in-out",
        callback: function(){
            sprite.setAnimation('idle');
        }
    })
}

Sin la linea sprite.setAnimation('idle'); todo funciona bien Con esta línea, todo sigue funcionando como se esperaba la mayor parte del tiempo (es decir, la animación se detiene después de que finaliza el movimiento), pero a veces el sprite desaparece por completo y aparece el siguiente mensaje de error críptico:

Error: d no está definido" en la línea 29 en kinetic-v3.9.8.min.js

Para fines de prueba, en este momento se llama a moveTo haciendo clic con el mouse en la pantalla. Pensé que podría tener algo que ver con hacer clic con el mouse antes de que terminara el movimiento anterior, pero a veces el error ocurre incluso cuando tengo cuidado de no hacerlo.

EDITAR: el error ocurre la mayor parte del tiempo cuando hago clic cerca del borde del escenario y la orden de movimiento ordena que la unidad "fuera" de él. Aún así, no pasa nada malo a menos que cambie la animación del sprite y no entienda la conexión. Además, logré reproducir el error sin hacer clic en ningún lugar cerca del borde, solo que es más raro.

preguntado el 12 de junio de 12 a las 21:06

1 Respuestas

Resuelto. Esto no tiene nada que ver con el movimiento y, como la mayoría de mis errores, es muy vergonzoso. Simplemente olvidé usar sprite.setIndex() al cambiar la animación a 'inactivo', que solo contiene un cuadro, a diferencia de 'walkDown'.

En pocas palabras: sprite.setIndex() es importante.

Respondido el 13 de junio de 12 a las 06:06

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.