Pay for Hesitation: fcommand()

Pages

2008年4月4日 星期五

fcommand()

fscommand(command:String, args:String = ""):void
讓該swf檔案能夠與Flash Player或host Flash Player的程式溝通, 如瀏覽器.

fscommand()通常用來讓swf與網頁的script溝通, 而這與script溝通的權限是控制在網頁的allowScriptAccess屬性(在HTML中屬於swf object的PARAM標籤中可以將該屬性設定或取消), 當allowScriptAccess被設為"never", swf將無法access網頁的script, 在Flash Player 7以下的版本是預設為"always"的, 也就是從任何地方來都可與script溝通. 也可以將allowScriptAccess設為"sameDomain", 此時scripting將只被允許給那些與該網頁相同domain的檔案, 這是Flash Player 8以上的版本的預設.





fscommand()最常被使用的command和args參數值為:
quit, None ==> 關閉放映檔 .
fullscreen, true/false ==> true:Flash Player設定為全螢幕模式; false:恢復為一般檢視.
allowscale, true/false ==> false:永遠以原始大小顯示swf檔; true ==> 強制swf縮放至100%.
exec, '應用程式的路徑' ==> 從swf中執行應用程式.

值得注意的是, 並非上列所有命令都能在所有應用程式中使用, (1)在網路播放程式中無法使用任何這些命令; (2)所有的命令都可在獨立應用程式(如放映檔)中使用; (3)只有allowscale和exec可在測試影片播放程式中使用.

package {
import flash.display.Sprite;
import flash.text.TextField;
import flash.system.fscommand;
import flash.events.MouseEvent;

public class FSCommandExample extends Sprite {
private var bgColor:uint = 0xFFCC00;
private var size:uint = 100;

public function FSCommandExample() {
fscommand("fullscreen", "true");
fscommand("allowscale", "false");
draw();
}

private function clickHandler(event:MouseEvent):void {
fscommand("quit");
trace("clickHandler");
}

private function draw():void {
var child:Sprite = new Sprite();
child.graphics.beginFill(bgColor);
child.graphics.drawRect(0, 0, size, size);
child.graphics.endFill();
child.buttonMode = true;
addEventListener(MouseEvent.CLICK, clickHandler);

var label:TextField = new TextField();
label.text = "quit";
label.selectable = false;
label.mouseEnabled = false;
child.addChild(label);

addChild(child);
}
}
}
exec命令只能在fscommand()所在的子目錄中執行, 也就是說, 若使用exec來呼叫應用程式, 則該應用程式必須位於名為fscommand的子目錄中. 再次提醒注意!! exec命令只能從Flash放映檔內運作... orz

fscommand("exec","test.exe");

沒有留言: