2

AS3 中有没有办法访问舞台的最后一个渲染?该渲染结果是否缓存在可访问的地方?我特别不能自己将舞台重新渲染到位图,因为那太昂贵了,这就是我尝试使用最后一个渲染的原因。

我需要这个,因为我试图在屏幕的某些特定范围内做一些热变形效果,而在 2D 中做到这一点的标准方法是使用置换贴图来抖动原始图像。当然,我对在 Flash 中进行热变形的其他想法持开放态度。

4

4 回答 4

2

我很确定我们无权访问它(尽管我真的不明白为什么)。我知道flash只会重绘舞台从一帧到另一帧的变化。您可以通过右键单击 Flash 调试播放器并选择“显示重绘区域”来看到这一点。

您可以尝试查看人们使用Convolution FilterDisplacement Map Filter所做的事情。这里有些例子:

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

于 2009-06-03T22:53:41.023 回答
1

我 99.9% 肯定你不能。我以前从未遇到过任何提及。不过会是一个很棒的功能。抱歉,我知道这不是特别有用。

于 2009-06-03T20:05:30.770 回答
1

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

但是,如果 Flash 在幕后创建一个缓存位图,就像它为标准过滤器所做的那样,那么性能不会比创建您自己的位图更好。

于 2009-09-29T06:43:45.150 回答
1

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

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

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

于 2009-06-04T18:26:07.317 回答