Flashvars, чтобы остановить перезагрузку флэш-фильма при перезагрузке страницы - PullRequest
0 голосов
/ 13 мая 2011

У меня есть флеш-баннер на каждой странице моего сайта.Я хочу, чтобы он продолжал играть, а не перезагружаться, когда пользователи меняют страницы.Я читал, что это может быть достигнуто с помощью flashvars, однако прошло довольно много времени с тех пор, как я выполнял какие-либо действия.Я пытался искать учебники безрезультатно.Может кто-нибудь направить меня в правильном направлении, пожалуйста.

ОБНОВЛЕНО

Спасибо за ваши комментарии.Теперь у меня есть это на 1-м кадре моего FLA-файла:

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 значение, которое он имел на момент обновления страницы.Как мне это вставить?

Извините за мою нубность

Ответы [ 2 ]

1 голос
/ 13 мая 2011

Опираясь на свой код 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;
}
0 голосов
/ 13 мая 2011

Возможно, это будет немного сложнее, чем просто использование 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();
}

Затем в вашем FLA на кадре 1 вы получите:

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

ExternalInterface.addCallback("checkCurrentFrame", checkCurrentFrame);

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

Теперь, когда вы переходите на другую страницу, вы просто прикрепляете текущий кадр к строке запроса, используя checkCurrentFrame();

.
...