Flashvars在页面重新加载时停止重新加载Flash影片

时间:2011-05-13 15:29:40

标签: flash refresh reload flashvars banner

我的网站上的每个页面都有一个flash横幅。我希望它在用户更改页面时继续播放而不是重新加载。我已经读到这可以使用flashvars实现,但是,自从我做了任何actionscripting以来已经有一段时间了。我试过查找教程无济于事。有人可以指出我正确的方向。

已更新

感谢您的评论。我现在在我的fla文件的第1帧上有这个:

var mySharedObject:SharedObject = SharedObject.getLocal("displayCookie");
if(mySharedObject.data.displayed == true){
gotoAndPlay(currentFrame); 
    trace("cookie found");
}else{
    trace("cookie not found, setting it now");
    //do whatever if NOT already been played
    mySharedObject.data.displayed = true;
    mySharedObject.flush();
}

但我不知道如何给currentFrame提供页面刷新时的值。我怎么把它放在那里?

对不起我的noobness

2 个答案:

答案 0 :(得分:1)

在您的SharedObject代码的基础上,您可以执行以下操作:

第1帧:

var mySharedObject:SharedObject = SharedObject.getLocal("displayCookie");

addEventListener(Event.ENTER_FRAME, checkLoadedFrames);

function checkLoadedFrames(e:Event):void {
   if(this.framesLoaded == this.totalFrames) {
        removeEventListener(Event.ENTER_FRAME, checkLoadedFrames);
        checkSharedObject();
   }
}

function checkSharedObject():void {
    if(mySharedObject.data.currentFrame){
       gotoAndPlay(mySharedObject.data.currentFrame); 
    }
    addEventListener(Event.ENTER_FRAME, saveCurrentFrame);
}

function saveCurrentFrame(e:Event):void {
   mySharedObject.data.currentFrame = this.currentFrame;
}

答案 1 :(得分:0)

它可能比仅使用FlashVars要复杂一点。一旦用户导航到下一页,您还需要使用一点ExternalInterface来获取横幅的当前帧。 (注意:我正在使用jQuery和swfobject)

首先,javascript会是这样的:

var flashObj;

$(document).ready(function() {
     if (navigator.appName.indexOf("Microsoft") != -1) {
          flashObj = window["flash"];
     } else {
          flashObj = document["flash"];
     }
});

function embedPlayer() {
     var flashvars = {};
     if (swfobject.getQueryParamValue("frame")) {
          flashvars.bannerframe = swfobject.getQueryParamValue("frame");
     } else {
          flashvars.bannerframe = 1;
     }
     var params = {};
     var attributes = {};
     swfobject.embedSWF("swf/Main.swf", "flash", "800", "600", "10.0.0", "swf/expressInstall.swf", flashvars, params, attributes);
}

function getBannerFrame() {
     return flashObj.checkCurrentFrame();
}

然后,在第1帧的FLA中,您将拥有:

var frame:Number = Number(root.loaderInfo.parameters.bannerframe);
if (!isNaN(frame)) {
     gotoAndPlay(frame);
}

ExternalInterface.addCallback("checkCurrentFrame", checkCurrentFrame);

function checkCurrentFrame():int {
     return this.currentFrame;
}

现在,只要您导航到另一个页面,就可以使用checkCurrentFrame();

将当前帧添加到查询字符串中