Это интервал.Вы устанавливаете их все до запуска animate, перезаписывая предыдущий интервал.Таким образом, вы просто продолжаете печатать координату 0,600.Это не единственное неверное из того, что я вижу, но это причина, по которой вы получаете только последнее изображение.
Нажмите каждую координату, а затем используйте интервал для циклического просмотра анимации.Не устанавливайте интервал до тех пор, пока все они не будут выдвинуты, а затем используйте глобальное значение для подсчета шагов, приращения при анимации (при перерисовке на холст).
Например (упрощено, и это может потребовать некоторой работычтобы работать так, как вы хотите):
var textureAtlas = new Image(),
steps = 0, maxsteps = 0;
//var moeImg = new Image();
var a;
function init() {
animateProps = new Array;
textureAtlas.src = "textureatlas1.png";
//moeImg.src = "images/moe.jpg";
var textureAtlasCoords = new Array("0,0", "100,0", "200,0", "300,0", "400,0", "500,0", "600,0");
maxsteps = textureAtlasCoords.length;
for(var c=0; c<textureAtlasCoords.length; c++) {
animateObj = new Object();
var thisCoord = textureAtlasCoords[c];
var thisCoordSplit = thisCoord.split(",");
var thisX = thisCoordSplit[0];
var thisY = thisCoordSplit[1];
//var a = setTimeout(Function(){animate(ctx, textureAtlas, thisX, thisY)},1000);
animateObj['canvasId'] = "princessAnimation";
animateObj['imgsrc'] = textureAtlas;
animateObj['x'] = thisX;
animateObj['y'] = thisY;
animateProps.push(animateObj);
}
a = setInterval(function(){animate(animateProps);},1000);
}
function animate() {
if(steps>=maxsteps) steps =0;
//get animation properties
var canvasId = animateProps[steps]['canvasId'];
var thisImg = animateProps[setps]['imgsrc'];
var thisX = animateProps[steps]['x'];
var thisY = animateProps[steps]['y'];
var canvas = document.getElementById(canvasId);
if (canvas.getContext){
var ctx = canvas.getContext('2d');
ctx.clearRect(0,0,1024,451);
console.log(thisX+" "+thisY);
ctx.drawImage(thisImg,thisX,thisY, 1024, 451, 0, 0, 1024, 451);
}
steps++;
}
Я тоже не уверен в ctx.drawImage(thisImg,thisX,thisY, 1024, 451, 0, 0, 1024, 451);
... Я чувствую, что вы не привязываете изображение к нужным параметрам.Помните, что ctx.drawImage для аргументов: img, sx, sy, sw, sh, dx, dy, dw, dh.img - изображение.sx, sy, sw, sh - обрезать прямоугольник, определенный этим.dw, dh - масштаб в этих измерениях dx, dy - положение здесь.
Надеюсь, что это поможет некоторым.