Actionscript 3 是否有人经历过使用getObjectsUnderPoint的副作用(包括性能问题)?
在我对正在进行的游戏项目进行重大更改之前,我只想听听其他人是否发现DisplayObject的getObjectsUnderPoint()函数存在任何问题 更新: 不仅是性能问题,还有使用它的任何其他限制(比如它不检测特定类型的UIElement(如示例所示)) 我将在我的应用程序中有三层(这是一个等距游戏)Actionscript 3 是否有人经历过使用getObjectsUnderPoint的副作用(包括性能问题)?,actionscript-3,actionscript,Actionscript 3,Actionscript,在我对正在进行的游戏项目进行重大更改之前,我只想听听其他人是否发现DisplayObject的getObjectsUnderPoint()函数存在任何问题 更新: 不仅是性能问题,还有使用它的任何其他限制(比如它不检测特定类型的UIElement(如示例所示)) 我将在我的应用程序中有三层(这是一个等距游戏) 背景——这只是一个留在底部的背景,与游戏无关 中间层——这是可玩的区域,这里我所有的游戏元素都将放在这一层 顶层——这是一个虚拟透明层,覆盖整个可播放区域,中断所有鼠标事件。这就是我想要
- 背景——这只是一个留在底部的背景,与游戏无关
- 中间层——这是可玩的区域,这里我所有的游戏元素都将放在这一层
- 顶层——这是一个虚拟透明层,覆盖整个可播放区域,中断所有鼠标事件。这就是我想要使用getObjectsUnderPoint()的地方
如果有人能解释这个函数是如何工作的,那么我就很难做出决定。不过有一个恼人的问题。我不知道他们是否修好了。至少有10.1次
如果您有一个容器并缩放了它
container.getObjectsUnderPoint
将返回错误的结果。总是因此,在我需要getObjectsDerpoint
的任何地方,我都必须从stage
调用它才能得到正确的结果。不过有一个恼人的问题。我不知道他们是否修好了。至少有10.1次
如果您有一个容器并缩放了它
container.getObjectsUnderPoint
将返回错误的结果。总是因此,在需要getObjectsDerpoint
的任何地方,我都必须从stage
调用它以获得正确的结果。这是一个不完整的函数。它返回鼠标下的图形对象,而不是用于事件或交互目的的所有潜在鼠标目标。实际上,检查getObjectsUnderPoint返回的数组以确定鼠标目标需要复杂的逻辑,因为适当的目标(如果您实际单击该点,Flash将选择的目标)可能不在列表中
首先,您必须反向检查对象数组,因为这些项是从后向前排序的。您必须检查每个对象的整个父链,查找mouseChildren=false的父对象,这将导致它拦截事件并成为目标。无论是否找到这样的对象,您到达的最后一个对象必须将其mouseEnabled属性设置为true,否则您必须跳过它并移动到数组中的下一个对象,例如,该对象将是您最初检查的对象后面的下一个精灵或形状。在浏览列表时,您必须注意到父对象何时发生更改,此时您需要假设该公共父对象的所有子对象的mouseEnabled属性都设置为false,在这种情况下,父对象将成为下一个候选对象。这实际上是非常复杂的,因为您使用的是自下而上的方法,使用的是自上而下生成的一组不完整的对象
要获取实际的潜在鼠标事件目标,请与默认调度逻辑一致。。。实际上,从舞台上以自上而下的方式开始,在深度优先搜索中向后遍历显示层次结构更容易,检查mouseChildren以确定是否需要进入儿童,并检查mouseEnabled是否要成为目标,否则,请进入容器的子容器,并再次从后向前重复该过程。这更准确、更完整、更直截了当。唯一的问题是你必须自己编码。这是一个不完整的函数。它返回鼠标下的图形对象,而不是用于事件或交互目的的所有潜在鼠标目标。实际上,检查getObjectsUnderPoint返回的数组以确定鼠标目标需要复杂的逻辑,因为适当的目标(如果您实际单击该点,Flash将选择的目标)可能不在列表中 首先,您必须反向检查对象数组,因为这些项是从后向前排序的。您必须检查每个对象的整个父链,查找mouseChildren=false的父对象,这将导致它拦截事件并成为目标。无论是否找到这样的对象,您到达的最后一个对象必须将其mouseEnabled属性设置为true,否则您必须跳过它并移动到数组中的下一个对象,例如,该对象将是您最初检查的对象后面的下一个精灵或形状。在浏览列表时,您必须注意到父对象何时发生更改,此时您需要假设该公共父对象的所有子对象的mouseEnabled属性都设置为false,在这种情况下,父对象将成为下一个候选对象。这实际上是非常复杂的,因为您使用的是自下而上的方法,使用的是自上而下生成的一组不完整的对象 要获取实际的潜在鼠标事件目标,请与默认调度逻辑一致。。。实际上,以自上而下的方式从舞台开始,在深度优先搜索中向后遍历显示层次结构,检查mouseChildren以确定是否需要进入子级,并检查mouseEnabled是否要成为目标,否则进入