(可能是一个愚蠢的问题,但......)我正在尝试编写一个自定义组件,它基本上包含一个相当大的表(最大的,它应该是800 x 35字段,其中最多只有20 x 10一次可见)。我想知道是否有人可以给我一些指示/建议如何以最佳方式做到这一点。
我现在使用的是什么:组件扩展UIComponent
,我有一个自定义滚动条,并使用新的spark.components.Label
作为表格中每个字段的文本容器。我将标签放在另一个UIComponent
内,这样我就可以屏蔽显示区域外的标签边缘。我试过了:
Labels
,因此该组件会变得有点滞后。Worker
并希望它返回一个UIComponent
并绘制表格,同时用户可以继续与组件的其他部分进行交互。
所以我的问题来了:
UIComponent
转移MessageChannel
。是否可以首先使用MessageChannel
进行此类转移,还是应该使用其他方法?UIComponent
。如果是这样,也许有人可以推荐我一个很好的教程或指导如何做到这一点?感谢您的帮助,如果您需要任何其他信息,请与我们联系。
-Vil
答案 0 :(得分:0)
主要问题(我认为)是每帧重新渲染Text。如果你有一个10,000行的TextField并且屏蔽了除前几行以外的所有行,那么Flash在渲染之前仍会渲染所有10,000行。
正如其他人所提到的,解决方案是自己处理渲染; blitting你想在屏幕上看到的部分。只要其他组件保持visible.false
,或者通常只是在DisplayList之外,它们就不会被环境光栅化。
Greensock's BlitMask正是如此。
答案 1 :(得分:0)
好吧,我花了一段时间重新编写代码,但最终做了@BotMaster建议(或至少我的工作是朝这个方向)。所以现在:
ArrayCollection
- s中。滚动条更新时:
ArrayCollection
- s,包含未使用的元素。ArrayCollection
- s中获取元素,调整其文本并将其放置在显示列表中。现在滚动比以前更顺畅。