在Flash中获取最后渲染的屏幕栅格

时间:2009-06-03 19:14:37

标签: flash actionscript-3 rendering

在AS3中有没有办法访问舞台的最后一个渲染?这个渲染结果是否可以在某处访问?我特意无法将舞台自身重新渲染为Bitmap,因为这太贵了,这就是为什么我要尝试使用最后一个渲染。

我需要这个,因为我试图在屏幕的某些特定范围内做一些热变形效果,而在2D中执行此操作的标准方法是使用位移贴图来抖动原始图像。当然,我愿意接受其他想法在Flash中做热变形。

4 个答案:

答案 0 :(得分:2)

我很确定我们无法访问此内容(虽然我不明白为什么)。我知道flash只会重新绘制帧与帧之间的变化。您可以通过右键单击Flash Debug Player并选择“Show Redraw Regions”来查看。

您可以尝试使用Convolution FilterDisplacement Map Filter查看人们在做什么。以下是一些例子:

虽然它们的舞台尺寸非常小,但是这些示例似乎运行良好,速度很快。

答案 1 :(得分:1)

我99.9%肯定你不能。我以前从来没有提到任何提及。虽然会是一个很棒的功能。对不起,我知道这不是特别有帮助。

答案 2 :(得分:1)

您无法访问栅格,但有一种解决方法。

不要将应用程序Sprite(或MovieClip)放在舞台上,而是将应用程序精灵绘制到位图上并将其放在舞台上。这种方式只渲染一次,但可以从最后一次渲染中访问位图。

缺点是Flash会渲染所有应用程序精灵每一帧(而不仅仅是脏矩形)。

答案 3 :(得分:1)

如果您不介意需要Flash Player 10,可以尝试自定义 Pixel Bender过滤器附加到您想要扭曲的舞台或DisplayObject。

但是,如果Flash在封面下创建缓存位图,就像对标准滤镜一样,那么性能将不会比创建自己的位图更好。