KineticJS 中的 Z 索引

标签 z-index kineticjs

我正在尝试使用 kineticJS 进行编程,但我在 Z-Index 管理方面遇到了一些麻烦。

似乎你不能只设置你想要的任何范围的 z-index,但每个对象都有自己的 z-index,你可以用其他对象重新更改它们。所以如果你有 2 个对象,它们的 z-index 为 0 和 1。你不能将它设置为 100 或类似的值。对吗?

我的问题是,我正在尝试编写一个具有等距概览的小游戏。并且玩家的 z-index 应该低于他正在行走的墙壁,但当他在墙壁前面时具有更高的 z-index。但我不能让所有具有相同 y 坐标的墙都具有相同的 z 索引,它们都有自己的免费 z 索引,这使得它们非常随机。

例如,y 坐标为 5 的墙的 z 索引为 5,而墙前面的玩家的 z 索引为 6。但最后,所有墙的随机索引为 5-20并且玩家得到一个随机索引,因此完全不可能创建这样的游戏。

还有其他方法可以管理对象的 z-index 吗?我看到的唯一解决方案是为具有唯一 z-index 的 map 的所有图 block 制作一个包含 2 个隐藏对象的隐藏层,并编写一个脚本,用墙壁和玩家或其他对象动态更改它们。但是必须有更好的方法来确保对象以正确的顺序显示吗?

最佳答案

我刚遇到同样的问题。 Z-index 似乎只能按顺序工作?所以我对我的元素列表进行排序,然后根据数组索引分配它们的 Z 索引:

var sortedElements = _elements.slice();
sortedElements.sort(function(a, b) {
    var diff = a.getY() - b.getY();
    if ( diff !== 0 ) { return diff; }
    return a.getX() - b.getX();
} );
for ( var loop = 0, length = sortedElements.length; loop < length; loop++ ) {
    sortedElements[loop].setZIndex(loop);
}

关于KineticJS 中的 Z 索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14034163/

相关文章:

css - 更改所有父元素的 css 位置,但负 css z-index 不能按预期工作

html - 元素在其他元素之上的子元素

css - Internet Explorer 7 中的 z-index 错误是否存在替代方案?

resize - Kineticjs 如何在舞台上居中图像并根据浏览器调整大小

javascript - 不透明度随着每次调用而不断增加

javascript - Kineticjs 自定义命中区域不起作用

jQuery 的 $ ('#divOne' ).animate({zIndex : -1000}, 2000) 不起作用?

css - 如何管理导航菜单的 z-index?

javascript - 循环动力学 javascript 一个接一个地转换而不是一次全部转换

javascript - 在 KineticJS 中单击时向多边形添加新点