Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 精灵的位置z索引_Javascript_Math - Fatal编程技术网

Javascript 精灵的位置z索引

Javascript 精灵的位置z索引,javascript,math,Javascript,Math,我绝对定位了在1000px 1000px区域内移动的对象/精灵。我希望这些精灵具有相对于其位置的z索引: -越向左,z指数越高。 -向下越远,z索引越高(也包括对象的高度)。 因此,该区域左下角的对象的z指数将比右上角的对象高得多——当对象彼此靠近时,这将产生一种凉爽的错觉 我试过了,但失败了: object.style.zIndex = ( 1000 - parseInt(object.style.left) ) + parseInt(object

我绝对定位了在1000px 1000px区域内移动的对象/精灵。我希望这些精灵具有相对于其位置的z索引: -越向左,z指数越高。 -向下越远,z索引越高(也包括对象的高度)。 因此,该区域左下角的对象的z指数将比右上角的对象高得多——当对象彼此靠近时,这将产生一种凉爽的错觉

我试过了,但失败了:

object.style.zIndex = ( 1000 - parseInt(object.style.left) ) + 
                      parseInt(object.style.top) + object.clientHeight
算法上:

  • 读取数组中的所有精灵
  • 迭代所有数组对象,读取每个数组的左位置属性,存储在同一数组中
  • 按值(即左位置属性)对数组进行数字排序
  • 迭代所有arrayy对象,按数组项索引设置z索引

  • 使用jQuery将使代码更短。如果你给我们你的精灵和那个区域的示例代码,我们可以尝试创建一些JS代码,它“完成任务”…

    这很容易使用数学

    当精灵移动时,请执行此操作,以便将其添加到移动精灵的方法或函数中

    spritePos = {
                 'x':1000 - parseInt(object.style.top.replace("px")),
                 'y':parseInt(object.style.left.replace("px")) - 1000 
    }; 
    
    zIndex = spritePos.x + spritePos.y;
    object.style.zIndex = zIndex;
    

    感谢您在这方面提供的帮助,但是我不想使用数组来实现这一点,因为我使用setInterval(?,100)oh进行动态操作,而且我已经在没有jquery的情况下构建了整个机制。既然我输入了这个,我实际上是在迭代所有移动元素并存储它们的值-我将使用上面建议的代码并保存值-我会尽快回复结果…好的,我尝试了你的代码,但它仍然不起作用-但是当我将它改为这个时它确实起作用了:return((parseInt(o.style.top)+o.clientHeight)*100)+(parseInt)(o型左)-8000)