我有一个小动作脚本图表,它意味着要进行实时更新,并且还能够支持超过10000个数据点。如果我们希望添加的新行不扩展该图表的边界,它当前设置它的方式不需要重绘整个图表。
然而就是这样,重绘区域显示整个图表被重绘,而不是我需要添加的单行。
当图表从javascript获取新数据时,它执行以下操作。(为清楚起见,已删除了一些内容。
private function registerJSCallbacks() : void
{
ExternalInterface.addCallback( "addData", addData );
}
private function addData( val : * ) : void
{
trace( "addData",val );
var g: Graphics = this.graphics;
g.moveTo(x1,y1);
g.lineTo(x2,y2);
}
有没有更好的方法,那不会重绘整个屏幕?这种类型的更新我的编码模式是错误的吗?
我是新手,所以即使是含糊不清的相关建议也会受到赞赏。
答案 0 :(得分:2)
你正在编辑底层矢量,所以它必须重绘整个事物。你有几个选择:
(最简单):在每次X绘制操作后生成一个新的Sprite,以便每次绘制只重新计算一些矢量线
(更多参与):使用一个Sprite进行绘制,每次X绘制操作,将精灵中的图形写入后备BitmapData对象(使用bitmapData.draw
)并清除精灵。
选项2可能比选项1表现更好,但我没有对此特定方案进行基准测试。如果在移动到新的“活动”精灵时,如果在选项1中的每个Sprite上sprite.cacheAsBitmap = true
,则可能会获得相似的性能。