0

サイトのすべてのページにフラッシュ バナーがあります。ユーザーがページを変更したときにリロードするのではなく、再生を続けたい。これは flashvars を使用して実現できると読んだことがありますが、アクションスクリプトを作成してからかなりの時間が経ちました。チュートリアルを調べてみましたが、役に立ちませんでした。誰かが私を正しい方向に向けることができますか?

更新しました

コメントしてくれてありがとう。私は今私の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 に与える方法がわかりません。どうやってそこに入れますか?

初心者でごめんなさい

4

2 に答える 2

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;
}
于 2011-05-13T18:36:13.963 に答える
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();

于 2011-05-13T16:43:20.547 に答える