如何在AS3中获取会话变量

时间:2012-07-23 07:43:14

标签: actionscript-3 flash flash-cs5

我已经设置了一个会话变量。我需要Flash才能检查是否存在并使用它,否则默认为某个值。

如何在AS3中执行此操作?

2 个答案:

答案 0 :(得分:1)

您可以通过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中请求它们。

答案 1 :(得分:1)

如果它是Javascript变量,您可以使用此动作脚本代码:

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应该是flash嵌入代码中的true

更多信息:
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 Cookie:http://www.quirksmode.org/js/cookies.html