KineticJS: sprites en movimiento que causan un error desconocido
Frecuentes
Visto 608 equipos
1
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.
1 Respuestas
0
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 kineticjs or haz tu propia pregunta.