当DisplayObjects在AS3中渲染时,我可以操作吗?

时间:2012-04-27 06:31:01

标签: actionscript-3 rendering

不使用BitmapData.draw();是否可以停止渲染显示列表,并在我认为合适时执行渲染(无论是整个显示列表还是单个DisplayObjects)。

如果没有,实现此目的的最佳方法是什么(包括我使用BitmapData.draw()渲染尚未添加到舞台的DisplayObjects的选项?)

1 个答案:

答案 0 :(得分:0)

您可以使用e.updateAfterEvent()在鼠标/键盘事件后强制渲染,但无法阻止显示列表重绘为屏幕。你最好的选择是:

  1. 将所有对象添加到一个holder精灵中,该精灵位于舞台显示列表之外。
  2. 向舞台添加Bitmap和关联的BitmapData
  3. 每当您想要“强制”渲染时,只需draw()holder放到BitmapData上,它就会被通常运行的完全相同的渲染器栅格化。只是你可以更好地控制栅格化设置。
  4. 请尝试以下操作,或参阅this了解详情:

    function snapClip( clip:DisplayObject ):BitmapData
    {
       var bounds:Rectangle = clip.getBounds( clip );
       var bitmap:BitmapData = new BitmapData( int( bounds.width + 0.5 ), int( bounds.height + 0.5 ), true, 0 );
       bitmap.draw( clip, new Matrix(1,0,0,1,-bounds.x,-bounds.y) );
       return bitmap;
    }