Flash actionscript 3应用程序中的显示列表管理

Flash actionscript 3应用程序中的显示列表管理,flash,actionscript-3,reorderlist,display-manager,Flash,Actionscript 3,Reorderlist,Display Manager,有没有人对ActionScript3项目中管理显示列表的好方法有什么建议?目前我正在构建一个应用程序,跟踪所有需要显示的模块,并对它们进行重新排序,这变得很麻烦。 我已经加载了SWF和实例化的类,这些类也加载了SWF、图像和视频。。我应该把一切都提到舞台上吗?我应该如何跟踪显示树?如何始终将一个特定模块强制放在树的顶部?我使用容器DisplayObjects,让每个DisplayObject管理它的直接子级(父级告诉子级做什么)。通常,您可以将显示列表分解为自然的“层”,这些层可以放在自己的容器

有没有人对ActionScript3项目中管理显示列表的好方法有什么建议?目前我正在构建一个应用程序,跟踪所有需要显示的模块,并对它们进行重新排序,这变得很麻烦。
我已经加载了SWF和实例化的类,这些类也加载了SWF、图像和视频。。我应该把一切都提到舞台上吗?我应该如何跟踪显示树?如何始终将一个特定模块强制放在树的顶部?

我使用容器DisplayObjects,让每个DisplayObject管理它的直接子级(父级告诉子级做什么)。通常,您可以将显示列表分解为自然的“层”,这些层可以放在自己的容器中

这样,主容器不必改变深度,因此您知道添加到舞台的最后一个容器将位于顶部


另外,要强制DisplayObject位于displaylist的顶部,只需使用addChild(即使它已经被添加)。这将把它添加到列表的顶部。

我使用容器DisplayObjects,让每个DisplayObject管理它的直接子对象(父对象告诉子对象该做什么)。通常,您可以将显示列表分解为自然的“层”,这些层可以放在自己的容器中

这样,主容器不必改变深度,因此您知道添加到舞台的最后一个容器将位于顶部


另外,要强制DisplayObject位于displaylist的顶部,只需使用addChild(即使它已经被添加)。这将把它添加到列表的顶部。

使用前面提到的容器是最好的方法。我是你的朋友

使用addChild()将某些内容强制放在列表的顶部是可行的,但是如果在整个代码中必须执行50000次,那么这可能会让人精疲力尽,而且当您获得多个需要保持在顶部的内容时,无论发生什么情况,都会让人精疲力竭

因此,我要做的是在我的文档类中创建一个“优先深度堆栈”数组,在该数组中添加我想要的所有内容,无论发生什么情况,只要我做任何明显的阶段性工作,例如关闭一个主要显示对象,我就使用一个名为“RunDepthStack”的方法循环遍历数组并重新添加数组中的所有内容

您甚至可以通过调用

object.parent.addChild(object);
这将使您能够使用单个超级方法管理优先显示对象,而不管其容器是什么


现在,如果你有一个非常复杂的UI,你将不得不变得更加精细,但我认为这不是你现在的问题。

使用前面提到的容器是最好的方法。我是你的朋友

使用addChild()将某些内容强制放在列表的顶部是可行的,但是如果在整个代码中必须执行50000次,那么这可能会让人精疲力尽,而且当您获得多个需要保持在顶部的内容时,无论发生什么情况,都会让人精疲力竭

因此,我要做的是在我的文档类中创建一个“优先深度堆栈”数组,在该数组中添加我想要的所有内容,无论发生什么情况,只要我做任何明显的阶段性工作,例如关闭一个主要显示对象,我就使用一个名为“RunDepthStack”的方法循环遍历数组并重新添加数组中的所有内容

您甚至可以通过调用

object.parent.addChild(object);
这将使您能够使用单个超级方法管理优先显示对象,而不管其容器是什么


现在,如果你有一个非常复杂的UI,你将不得不变得更精细,但我现在不怀疑这是你的问题。

如果应用程序很大,我会在用户与应用程序交互时添加child/removeChild

然而,如果它相当小,那么简单可见的true/false就可以很好地实现它

听起来你是在第一种情况下

但是是的,一定要使用类/对象作为站点地图,用于填充导航、跟踪模块引用、用户所在位置以及可用于深度链接

至于深度交换,我假设您谈论的是视觉深度,请实现这些:)

交换:

var otherindex = getChildIndex(theotherthing);
在那件事的背后:

setChildIndex(example, otherindex) //pushes the other thing forward
前面:

setChildIndex(example, otherindex + 1);

HTH.

如果应用程序很大,我会在用户与应用程序交互时添加child/removeChild

然而,如果它相当小,那么简单可见的true/false就可以很好地实现它

听起来你是在第一种情况下

但是是的,一定要使用类/对象作为站点地图,用于填充导航、跟踪模块引用、用户所在位置以及可用于深度链接

至于深度交换,我假设您谈论的是视觉深度,请实现这些:)

交换:

var otherindex = getChildIndex(theotherthing);
在那件事的背后:

setChildIndex(example, otherindex) //pushes the other thing forward
前面:

setChildIndex(example, otherindex + 1);

HTH.

我喜欢这个想法,你有没有一个例子说明你是如何实施的?谢谢;-)我真的不喜欢孩子们告诉父母该做什么的想法!我喜欢这个想法,你有没有一个例子说明你是如何实施的?谢谢;-)我真的不喜欢孩子们告诉父母该做什么的想法!