硬件縮放的用法

Flash Player Update 3的Stage對象追加了一個fullScreenSourceRect的屬性。這個屬性可以在AS2.0和AS3.0里使用。它把Rectangle的 領域縮放為全屏。用fullScreenSourceRect指定領域用硬件來畫,比以前的效率與畫質(zhì)高不少。

語法

fullScreenSourceRect : flash.geom.Rectangle;

全屏模式的例子:

//Actionscript 3.0
import flash.geom.*;
public function fullScreen():void {
Stage[“fullScreenSourceRect”] = new Rectangle(0, 0,
Stage.width, Stage.height);
Stage[“displayState”] = “fullScreen”;
}

在Flash CS3的類重新定義之前無法用Stage.fullScreenSourceRect的寫法,會通不過編譯。fullScreenSourceRect指定的領域在Stage外也可。

在AS3.0使用的注意點

要在AS3.0里使用新的全屏模式,必須替換playerglobal.swc。新的playerglobal.swc包含在以下文件里。

full_screen_demo.zip (zip, 49.2 MB)

取出playerglobal.swc,把它放在以下地方

Flash CS3: Adobe Flash CS3\en\Configuration\ActionScript 3.0\Classes\

Flex Builder: Flex Builder 2\Flex SDK 2\frameworks\libs

介紹一下Video的全屏模式。

用硬件縮放來全屏Video比用Stage來做效率高。但與普通的不同,有幾個重要的點。

  • 最好把smoothing設為false。
  • 最好把deblocking設為0。
  • 把屬性設為初始值。

這樣效率會有顯著的提高。下面是把myVideo用全屏播放的例子。

import flash.geom.*;
public function goFullScreen():void {
// 保存現(xiàn)在的屬性
myVideo.savedWidth = myVideo.width;
myVideo.savedHeight = myVideo.height;
myVideo.savedSmoothing = myVideo.smoothing;
myVideo.savedDeblocking = myVideo.deblocking;
// 把屬性設為初始值
myVideo.width = myVideo.videoWidth;
myVideo.height = myVideo.videoHeight;
myVideo.smoothing = false;
myVideo.deblocking = 0;
// 全屏
Stage[“fullScreenSourceRect”] = new Rectangle(
myVideo.x, myVideo.y, myVideo.width, myVideo.height);
Stage[“displayState”] = “fullScreen”;
}