Apache flex 包含许多UIC组件的Flex画布,如果移动了一个组件,是否重新绘制/重新处理其他组件?
我有一个名为Host的画布,其中有许多UIComponents作为子组件,有时多达1000或3000项。目前这还可以,因为它们不是交互式的 但是,我在画布上添加了一条“标记线”(一个1像素宽的UI组件,带有彩色背景),它跟随鼠标移动将此UIComponent添加到主机画布并移动时,所有内容都会减速为爬网,即UIComponent移动需要很长时间Apache flex 包含许多UIC组件的Flex画布,如果移动了一个组件,是否重新绘制/重新处理其他组件?,apache-flex,flash,flexbuilder,Apache Flex,Flash,Flexbuilder,我有一个名为Host的画布,其中有许多UIComponents作为子组件,有时多达1000或3000项。目前这还可以,因为它们不是交互式的 但是,我在画布上添加了一条“标记线”(一个1像素宽的UI组件,带有彩色背景),它跟随鼠标移动将此UIComponent添加到主机画布并移动时,所有内容都会减速为爬网,即UIComponent移动需要很长时间 你认为这是什么原因造成的?或者如何避免?每次移动鼠标时,都可能导致调用这些UIComponent中每一个的measure和updateDisplayLi
你认为这是什么原因造成的?或者如何避免?每次移动鼠标时,都可能导致调用这些
UIComponent
中每一个的measure
和updateDisplayList
方法。因此,您可能导致数千个组件与其邻居重新协商其位置和尺寸
在没有看到您的代码的情况下,我无法具体推荐解决方案,但您可以尝试在容纳数千个组件的画布上放置一个透明背景的
画布,匹配其尺寸和位置,并使用该画布移动标记线。每次移动鼠标时,您可能导致调用这些UIComponent
中每一个的measure
和updateDisplayList
方法。因此,您可能导致数千个组件与其邻居重新协商其位置和尺寸
在没有看到您的代码的情况下,我无法具体推荐解决方案,但您可以尝试在容纳数千个组件的画布上放置一个透明背景的画布,匹配其尺寸和位置,并使用该画布移动标记线。我假设您有1000个项目,一次只有一小部分在屏幕上
如果您有那么多的组件,那么速度会减慢。我建议考虑使用基于列表的类。因此,只渲染屏幕上的项目,并且内存中不会挂起很多组件 我假设您的1000个项目中,一次只有一小部分在屏幕上
如果您有那么多的组件,那么速度会减慢。我建议考虑使用基于列表的类。因此,只渲染屏幕上的项目,并且内存中不会挂起很多组件 为画布重写updateDisplayList函数,果然,每次移动UIComponent时都会调用它,而UIComponent又会调用所有其他组件的布局函数。透明画布解决了这个问题。好家伙。为画布重写了updateDisplayList函数,果然,每次我移动UIComponent时都会调用它,而UIComponent又会调用所有其他组件的布局函数。透明画布解决了这个问题。好家伙。我需要用画布来设置每个显示对象的x,y。我想我可能可以通过使用“itemRenderer池”来防止屏幕外项目被渲染,类似于列表的工作方式。我需要使用画布来设置每个显示对象的x,y。我想我可能可以通过使用“itemRenderer池”来防止屏幕外项目的渲染,类似于列表的工作方式。