我正在尝试使用kineticJS进行编程,但我在Z-Index管理方面遇到了一些麻烦。
您似乎无法设置任何所需范围的z-index,但每个对象都有自己的z-index,您可以与其他对象重新进行更改。因此,如果您有2个对象,则它们的z-index为0和1.您无法将其设置为100或类似的东西。这是对的吗?
我的问题是,我正在尝试用等距概述编写一个小游戏。并且玩家应该具有较低的z-index,然后是他正在行走的墙壁,但是当他在墙壁前面时,z-index更高。但是我不能让同一个y坐标的所有墙都有相同的z-index,它们都有自己的z-index,这是自由的,这使得所有的非常随机。
例如,y坐标为5的墙壁为z-index 5,而墙壁前方的玩家有z-index 6.但最后,所有墙壁的随机指数均为5-20并且玩家获得随机索引,这使得创建这样的游戏完全不可能。
还有其他方法可以管理对象的z-index吗?我看到的唯一解决方案是使用唯一的z-index为我的地图的所有图块创建一个带有2个隐藏对象的隐藏图层,并编写一个脚本,用墙和玩家或其他对象动态地更改它们。但是必须有一种更好的方法来确保对象以正确的顺序显示?
答案 0 :(得分:1)
我刚刚遇到同样的问题。看来Z-index只能按顺序工作?所以我对元素列表进行了排序,然后根据数组索引分配了它们的Z-index:
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);
}