Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flex 强制在actionscript中重新绘制较小的区域_Apache Flex_Flash_Actionscript 3 - Fatal编程技术网

Apache flex 强制在actionscript中重新绘制较小的区域

Apache flex 强制在actionscript中重新绘制较小的区域,apache-flex,flash,actionscript-3,Apache Flex,Flash,Actionscript 3,我有一个小的动作脚本图表,可以实时更新,还可以支持10000多个数据点。按照当前的设置方式,如果我们希望添加的新行没有扩展图表的边界,则不需要重新绘制整个图表 但它确实如此,重绘区域显示整个图表被重绘,而不是我需要添加的单行 当图表从javascript中获得一条新数据时,它会执行以下操作(为了清晰起见,一些内容已被剥离) private function registerJSCallbacks() : void { ExternalInterface.addCallback( "add

我有一个小的动作脚本图表,可以实时更新,还可以支持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); 
}
有没有更好的方法来做到这一点,这样就不会重新绘制整个屏幕?我的编码模式对于这种类型的更新是错误的吗


我是一个新手,所以即使是模糊相关的建议也会很感激。

您正在编辑基础向量,因此它必须重新绘制整个内容。您有几个选项:

  • (最简单):在每次X绘制操作后生成一个新精灵,以便每次绘制只重新计算几个矢量线

  • (更复杂):使用一个精灵进行绘制,并且每执行一次X绘制操作,将精灵中的图形写入支持位图数据对象(使用
    BitmapData.draw
    )并清除精灵


  • 选项2的性能可能比选项1更好,但我还没有对这个特定场景进行基准测试。如果您在移动到新的“活动”精灵时对选项1中的每个精灵执行
    sprite.cacheAsBitmap=true
    ,您可能会获得相当的性能。

    谢谢,需要一些调整才能正常工作,但现在它工作得非常好。