【问题标题】:How to read an HTML cookie in Flash?如何在 Flash 中读取 HTML cookie?
【发布时间】:2010-12-06 14:19:55
【问题描述】:

我希望在这里指出正确的方向。我遇到的问题是试图弄清楚如何在 Flash 中读取 HTML 创建的 cookie。我有一个视频播放器,它应该在 24 小时内自动播放一次,第二天它应该为最终用户再次自动播放。

这就是 HTML 页面上显示 Flash 播放器和 cookie 的脚本的样子:

<script type="text/javascript">
var so = new SWFObject("flvplayer.swf", "mymovie", "640", "394", "8", "#90ab69");
var x = readCookie('homepageIntro') // <- The Cookie (How do I read this in Flash?)
so.addParam("quality", "high");
so.addParam("wmode", "transparent");
so.useExpressInstall('expressinstall.swf');
so.addVariable("autostart", "false");
so.addVariable("file", "video.flv");
so.addVariable("key", "");
so.addVariable("showfsbutton", "false");
so.addVariable("noControls", "false");
so.addVariable("home", "true");
so.write("flashcontent");
</script>

不知道如何在 Flash 中读取 var x,我试图通过使用 Flash cookie 来避免使用它,但是现在视频播放器只会自动播放一次并且永远不会再次自动播放(无法清除Flash cookie)。

public function sharedObjectCheck():void
{
    if (mySharedObject.data.flashCookie == "true"){
        //Code to NOT autoplay video
    } else if (mySharedObject.data.flashCookie == null){
        mySharedObject.data.flashCookie = "true"; //if first time, set the cookie value
        mySharedObject.flush(); //add the cookie
    }
}

我做了一些搜索,发现了这个Have a HTML page play Flash movie only once (not when revisited…),但这只是一个 Flash 功能,它永远不允许在特定时间段内重新启动。

所以我想问我的 Flash 堆垛伙伴我如何在 Flash 中读取 var x(cookie)

【问题讨论】:

    标签: html flash actionscript-3 cookies


    【解决方案1】:

    直接回答您的问题是使用ExternalInterface

    import flash.external.*
    
    try {
      var cookie : String = ExternalInterface.call("readCookie", "homepageIntro") as String;
    } catch (error : SecurityError) {
      trace("SecurityError:", e.message);
    } catch (error : Error) {
      trace("Error:", e.message);
    }
    

    您可能还需要设置 allowScriptAccess 才能让呼叫运行。

    使用 LSO 可能是您的最佳选择,或者将 x 的值作为 FlashVar 传递。

    【讨论】:

    • 嘿,谢谢,要为此设置一个测试。顺便说一句,我在 e.message 行的 Flash 中收到了语法错误警告,所以我只是删除了那部分。
    • 现在应该修复了。痕迹缺少逗号。
    【解决方案2】:

    您是否尝试将 x 值分配给 flashvars?

    so.addVariable("cookie", x);
    

    在这种情况下,您应该能够在 Flash 中检索它,方法是在 Document Class 中这样做:

    var params:Object = this.loaderInfo.parameters;
    var cookie:Object = params.cookie;
    

    【讨论】:

    • 我必须等待 HTML 人员更新该代码,不幸的是,更新前端代码是在我没有进入的系统中:/ 也延迟了我对 Tylers 答案的测试,但是是的,我喜欢将该值更好地移入 FlashVars...
    • 另一方面,SWFObject 代码似乎不是最新的,我认为当前的 SWFObject 版本(2.2)仍然不支持 addVariable 方法...
    • 是的,OP 看起来他正在使用 SWFObject 1.5。
    【解决方案3】:

    使用 flash cookie 进行操作,但实际上存储上次自动播放的时间,而不是简单的标志。

    【讨论】:

    • 嗯,比如检查客户端的本地时间,将其保存在 sharedObject 中,然后在再次运行检查时进行 24 小时差异计算?或者有没有更简单的方法来使用 sharedObject?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-25
    • 2022-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多