Это не проблема z-index, с вашими зомби все в порядке.
Ваша проблема действительно со второй строкой drawFrame
drawFrame: function(){
Sprite.ctx.clearRect(0,0,Sprite.width,Sprite.height); //clear previous frame
// I am trouble:
MainContext.clearRect(Sprite.Xpos, Sprite.Ypos, Sprite.width, Sprite.height);
Это очищает прямоугольникглавный холст, где зомби когда-то был каждый раз, когда вы рисуете зомби, который может влиять на близлежащие объекты!
Поэтому вместо этого вам следует каждый раз очищать весь холст.
Попробуйте закомментировать MainContext.clearRect в drawFrame
, и вместо этого добавьте один в runloop
, как показано ниже.Это должно исправить ваши проблемы.
runloop = function(m) {
// New clear put here!
MainContext.clearRect(0,0,canvas.width,canvas.height);
m.drawFrame();
for (Z in Zarr) { // For ZOMBIE in "Zombie Array" Aaaaarrrgghhh...
Zarr[Z].pointTo(m);
Zarr[Z].drawFrame();
MainContext.drawImage(Zarr[Z].canvas, Zarr[Z].Xpos, Zarr[Z].Ypos);
};
MainContext.drawImage(m.canvas, m.Xpos, m.Ypos);
};