以正确的顺序绘制一系列等距的敌人还是处理脏矩形?

| 我想知道是否有人可以帮助我确保我的……呃……Z-index(糟糕的双关语,您很快就会明白为什么)的顺序错误。我现在已经连续进行了几个小时,而且我的眼睛看上去还很不方便-但是-也许一夜之间在Stack上提问可以帮助将其推向正确的方向。 我一直在为https://github.com/AlexChesser/jsSprite编写代码,到目前为止,我已经进行了第六次测试。使用W键运行,而A和D键则左右移动:http://chesser.ca/jsSprite/06-brainnsss....php(Gettit?Z-Index ?!热闹)。 无论如何,您会注意到,如果您在屏幕上跑了一会儿。各个僵尸的白色正方形/脏矩形与其他僵尸的正方形重叠。当使用多个重叠的精灵时,如何确保它们都被绘制而不会破坏其他精灵? (您会看到z用于僵尸,但是z索引就像您在CSS中处理重叠时一样-当您连续编写了多个小时的代码时,可能会更有趣)。 谢谢你的 脑子......
已邀请:
这不是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);
它正在清除每次绘制僵尸时僵尸曾经所在的主画布的矩形,这可能会影响附近的物体! 因此,您应该每次都清除整个画布。 尝试在
drawFrame
中注释掉MainContext.clearRect,然后在
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);
};
渲染前如何通过每个僵尸的y坐标
Ypos
对数组(
Zarr
)进行排序?还是您遇到(缺乏)透明度的问题?

要回复问题请先登录注册