2009-06-03 19 views
2

AS3中有没有办法访问舞台的最后呈现?渲染结果是否缓存在某处可访问?我专门无法将舞台自己重新渲染到位图,因为这太昂贵了,这就是为什么我要使用最后的渲染。获取Flash中最后呈现的屏幕栅格

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

回答

2

我很确定我们没有访问权限(虽然我不明白为什么)。我知道闪光灯只会重新渲染舞台的变化。您可以通过右键单击Flash Debug Player并选择“显示重绘区域”来查看。

你可以试着看看人们在做什么Convolution FilterDisplacement Map Filter。下面是一些例子:

有例子似乎做工精细,具有良好的速度,虽然他们有相当的小舞台大小。

1

我99.9%确定你不能。我从来没有遇到过任何提及。虽然会是一个很棒的功能。对不起,我知道这不是特别有用。

1

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

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

不利的一面是,Flash呈现每个帧的所有应用程序精灵(不只是脏的矩形)。

+0

+1,我很害怕这种情况,不幸的是,预渲染对我的情况并不是一个好的选择(非常有意识)。 – 2009-06-04 20:32:20

1

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

但是,如果Flash在覆盖范围内为标准过滤器创建缓存位图,那么性能不会比创建自己的位图更好。