我已经设置了一个会话变量。我需要 Flash 能够检查是否存在并使用它,否则默认为某个值。
我怎样才能在 AS3 中做到这一点?
如果它是一个 Javascript 变量,你可以使用这个 actionscript 代码:
var sessionValue:String = ExternalInterface.call(String(<script>function(){ return sessionValue; };</script>));
trace("sessionValue:" + sessionValue); // output to debug window
如果你想从 Flash 中读取 javascript cookie,你可以尝试使用这个(未经测试)
trace("cookie 'sessionValue':" + readCookie("sessionValue")); // output to debug window
function readCookie(name:String):String { // quickly ported from http://www.quirksmode.org/js/cookies.html
var nameEQ:String = name + "=";
var cookie:String = ExternalInterface.call(String(<script>function(){ return document.cookie; };</script>));
var ca:Array = cookie.split(';');
for(var i:int = 0; i < ca.length; i++) {
var c:String = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}
为了使 ExternalInterface 可用,它应该在浏览器中在线运行,并且allowscriptaccess
应该true
在 Flash 嵌入代码中。
更多信息:
Flash ExternalInterface:http
://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/external/ExternalInterface.html?filter_flash=cs5&filter_flashplayer=10.2&filter_air=2.6
Javascript cookies: http://www .quirksmode.org/js/cookies.html
您可以通过 FlashVars 将会话数据传递给 Flash。
<object width="" height="">
<param name="flashvars" value="sessionVar=sessionValue" />
<embed src="file.swf?sessionVar=sessionValue" width="" height="" />
</object>
并在 AS3 中将它们拉出:
var embedData:Object = root.loaderInfo.parameters;
// Access via embedData.sessionVar
或者,您可以设置一个 PHP 脚本来保存会话变量,然后使用 URLLoader 在 AS3 中请求它们。