在actionscript中强制缩小重绘区域

时间:2010-07-13 17:55:06

标签: flex flash actionscript-3

我有一个小动作脚本图表,它意味着要进行实时更新,并且还能够支持超过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); 
}

有没有更好的方法,那不会重绘整个屏幕?这种类型的更新我的编码模式是错误的吗?

我是新手,所以即使是含糊不清的相关建议也会受到赞赏。

1 个答案:

答案 0 :(得分:2)

你正在编辑底层矢量,所以它必须重绘整个事物。你有几个选择:

  1. (最简单):在每次X绘制操作后生成一个新的Sprite,以便每次绘制只重新计算一些矢量线

  2. (更多参与):使用一个Sprite进行绘制,每次X绘制操作,将精灵中的图形写入后备BitmapData对象(使用bitmapData.draw)并清除精灵。

  3. 选项2可能比选项1表现更好,但我没有对此特定方案进行基准测试。如果在移动到新的“活动”精灵时,如果在选项1中的每个Sprite上sprite.cacheAsBitmap = true,则可能会获得相似的性能。