4

我的 AS3 项目中有一个 datagrid 组件,并有一个自定义单元格渲染器分配给一个列,该列根据单元格数据的值将影片剪辑加载到单元格中。例如,如果单元格数据是数字 1 我加载movieclip1,如果2 我加载movieclip2。这很好用。在 CustomCellRenderer 类中,我使用

 public function set data(value:Object):void {
   _data = value;
   // value.Number is the value that I use to determine which movie clip to show in this cell 
   source = "movie"+value.Number;
 }

当 DataGrid 加载时,正确的影片剪辑被加载到单元格中。但是,当用户通过单击列的标题对列进行排序时,某些影片剪辑不会加载。我检查了数据是否正常排序,当我追踪 "movie"+value.Number 时,会显示正确的字符串。

我想也许我需要在再次设置源之前卸载每个单元格中的影片剪辑?我该怎么做呢?

我注意到的另一件事是,当 DataGrid 需要滚动时,因为屏幕上的行数超过了(呃!),那么一次只会显示一组影片剪辑,就好像有一个“活动”或“在focus' 单元格,其中将显示唯一的影片剪辑。同样,我猜测 Flash 正在尝试仅显示可滚动 DataGrid 的可见部分中的影片剪辑,并在每次滚动时尝试刷新。然而,只有 1 个单元格显示影片剪辑,而不是所有可见部分(大约 8 行)。

谢谢

4

1 回答 1

0

可能它与数据网格单元虚拟化有关,因为它试图优化滚动性能并回收单元布局。尝试将虚拟布局设置为 false,也许会有所帮助。

于 2012-10-09T06:34:06.587 回答