之前沒有自己確認過還以為FLASH LITE 1.1的參數傳遞只需要用_level0就可以抓得到
但是實際要做時才發現並不是這麼簡單
比較保險的做法是參考携帯Flash (FLASH Lite 1.1) へ普通にパラメータを渡す的方式
透過php把SWF轉換後
直接把變數加到SWF中再轉回輸出
再加上モバケー的參數傳遞本身就比較麻煩
所以我又另外寫的一個function來取得SWF實際使用的URL
functionApp.php:
//
function swf_param_insert($file, $varsName, $item){
$tags = build_string($varsName, $item);
$src = file_get_contents($file);
$i = (ord($src[8])>>1)+5;
$length = ceil((((8-($i&7))&7)+$i)/8)+17;
$head = substr($src,0,$length);
return(
substr($head,0,4).
pack("V",strlen($src)+strlen($tags)).
substr($head,8).
$tags.
substr($src,$length)
);
}
function build_string($varsName, $item) {
$s = sprintf(
"\x96%s\x00%s\x00\x96%s\x00%s\x00\x1d",
pack("v",strlen($varsName)+2), $varsName,
pack("v",strlen($item)+2), $item
);
return(sprintf(
"\x3f\x03%s%s\x00",
pack("V",strlen($s)+1),
$s
));
}
//
function getFlashUrl($file,$params){
global $gameURL; //這是另外定義的路徑,換上自己的實際路徑就OK了
$flashUrl = "location: ".$gameURL."swf.php?swffile=";
$flashUrl .= $file."%3F";
foreach($params as $k => $v){
$flashUrl .= $k."%3D".$v;
$flashUrl .= "%252526";
}
return $flashUrl;
}
swf.php:
use.php:
$params["flashVar1"] = "test1";
$params["flashVar2"] = "test2";
$params["flashVar3"] = "test3";
if(isset($_GET['flash'])) header(getFlashUrl("testSwf",$params));
testSwf.fla:
fscommand2("FullScreen", true);
fscommand2("SetQuality", "high");
_focusrect = false;
urlStr = "http://justTest.com/";
urlStr = urlStr add "justTest.php?" add trackParams;
on(keyPress "") {
getURL(_root.urlStr, "", "GET");
}
on(press ) {
getURL(_root.urlStr, "", "GET");
}