之前沒有自己確認過還以為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:
<?php require_once("function.php"); header("Content-Type: application/x-shockwave-flash"); $swffile = $_GET['swffile']; $params = explode("?",$_GET['swffile']); print swf_param_insert('swf/'.$params[0].'.swf', "trackParams", $params[1]); ?> |
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 "<Enter>") { getURL(_root.urlStr, "", "GET"); } on(press ) { getURL(_root.urlStr, "", "GET"); } |