2009-06-03 49 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在覆蓋範圍內爲標準過濾器創建緩存位圖,那麼性能不會比創建自己的位圖更好。