Api 基维:深度还是不那么深

Api 基维:深度还是不那么深,api,z-index,kivy,depth,Api,Z Index,Kivy,Depth,现在我可能是错的,但经过一整天的测试,我发现 添加小部件并设置z索引时,值“0”似乎是神奇的深度 如果一个小部件的Z值为0,它将被绘制在所有不在0的东西的顶部 一个小部件的z索引是否为99、-999、10、-2或其他任何值都无关紧要。。。它不会出现在z索引设置为0的小部件顶部 但它变得更奇怪了 任何小于-2或大于2的索引似乎都会产生“索引超出范围”错误。有趣的是…当我使用背景和精灵小部件时,背景的Z被设置为999,没有错误。当我添加另一个sprite小部件时,出现了-2到2 z索引限制 是的,我

现在我可能是错的,但经过一整天的测试,我发现

添加小部件并设置z索引时,值“0”似乎是神奇的深度

如果一个小部件的Z值为0,它将被绘制在所有不在0的东西的顶部

一个小部件的z索引是否为99、-999、10、-2或其他任何值都无关紧要。。。它不会出现在z索引设置为0的小部件顶部

但它变得更奇怪了

任何小于-2或大于2的索引似乎都会产生“索引超出范围”错误。有趣的是…当我使用背景和精灵小部件时,背景的Z被设置为999,没有错误。当我添加另一个sprite小部件时,出现了-2到2 z索引限制

是的,我知道…听起来很糟糕

我的问题是,关于“0”是神奇的Z值,我说的对吗

如果是这样的话,创建一个简单的23维效果,比如将精灵移动成一块大石头,需要一些不需要的代码

由于您只能在添加小部件时设置Z,因此必须删除并立即添加回新的Z值…小部件

您必须对正在移动的精灵和正在讨论的重叠对象执行此操作。见鬼,我已经实际编写了这些代码,但我想从Kivy pros那里了解一下,有没有一种方法可以在不删除和添加小部件的情况下设置z-index

如果不是,我将不得不接受这种痛苦的方式


我的Kivy版本是1.9.0,你说的z顺序是什么意思?绘图顺序完全由添加到父级的小部件的顺序决定,而
add\u widget
的index参数只是一个列表索引,小部件将在其中插入。更改窗口小部件的绘图顺序的正确方法是删除并添加它们(实际上,您可以手动处理画布,但这是相同的事情,只是级别较低,不是更好的主意).

我发现了一个使用基本逻辑的有效解决方案,它基于这样一个事实:为了控制深度/绘制顺序,必须删除并再次添加小部件

我知道主要角色小部件必须与相关对象一起删除……因此我创建了一个主要角色父小部件,除了图形小部件之外,它还定义和控制主要角色

我的测试包括主角走在一块大石头前面,然后在石头后面…创造一个23维的效果

我只是简单地使用“y-”理论以及小部件附加和分离代码来创建所需的效果

唯一让我措手不及的是,我的演员图形小部件正在加载纹理。这是一个很大的拒绝,因为fps死了

简单修复,将纹理加载移动到主角色父窗口小部件,加载将始终完成一次

另外,如果有人知道如何隐藏滚动条并希望分享这些知识,我们将不胜感激。我还没有为它寻找API解决方案,但我很快就会找到

现在,我只是想确保我能完成创建商业23D游戏(手持设备)所需的基本操作


我是一名图形艺术家和网络开发人员,所以想出可爱的视觉效果不会是一个问题。我更关心的是所谓的“幕后操纵”。希望如此,哈哈。

以你的方式来看,如果一个屏幕有50个小部件,其中49个需要深度重新排序,那么所有49个小部件都必须删除并重新添加,但以新的顺序。。。那太难了。鉴于Kivy只是一组API,很难让人失望。如果需要的话,我可以通过一次操作两个小部件来完成我想要的。我想重新排序问题不会出现太多,但这并不是一件不合理的事情。您可以自己管理它,方法是创建一个ordering属性,然后使用argsort类型的函数(如at)一次性添加/删除它们