Flashとjavascriptでクッキー(Cookie)を扱う



 
最近仕事でイントロムービーがあるFlashを作ったのですが

・1回目に見ときはイントロムービーが流れるように
・2回目以降はイントロムービーは流れずにスキップ
・ブラウザを終了させてもう一度開いたら、またイントロムービーが見れるように

という要望がありました。

まあ良くありがちな要望なのですが、今回それをブラウザのクッキーを使って判定させようと思って『flash クッキー』などで検索したのですが、Flash版のクッキーであるSharedObjectに関する記事ばっかり引っかかって、なかなかそのものずばりのページにいきつかなかったので、メモとして残しておくことにします。

(昔はFlashでクッキー扱う記事よく見たような気がするんですが。今はFlashでクッキーみたいなの使いたいときはSharedObeject使えば良いということなんでしょうか。そもそもイントロムービーがあるようなFlashも最近はあまり見かけませんね。)

サンプルはこちら。(上に貼っているFlashと同じですが取得してるクッキーは別です)

上のページに最初にアクセスすると最初は背景が黄色い画面が表示されます(ここでクッキーが保存されます)、更新ボタンを押すと緑の画面が表示され、以降黄色い画面を見ることは出来ません。ブラウザを一度終了させてからアクセスすると、また黄色い画面に飛びます。

スクリプトについて

html側には以下のjavascriptを記述します。

JAVASCRIPT:
  1. <script language="JavaScript" type="text/javascript">
  2. function setMyCookie(str) {
  3.     document.cookie = str;
  4. }
  5.  
  6. function getMyCookie() {
  7.     var c = document.cookie;
  8.     return c;
  9. }
  10. </script>

FlashのActionScript側には以下を記述します。

ACTIONSCRIPT:
  1. //クッキーを取得
  2. var returnValue:String = flash.external.ExternalInterface.call("getMyCookie").toString();
  3. //解析
  4. var judge:Number = returnValue.indexOf("chabudai");
  5. if (!(judge == -1 || judge == undefined)) {
  6. gotoAndPlay("end");
  7. }

↑クッキーが保存されているかどうか判定させたいところに書くスクリプト
ExternalInterfaceで上記で記述したjavascriptを呼び出しています。
受け取ったクッキーの文字列から特定の文字列を探します。ユニークな文字列にしましょう。ここでは"chabudai"にしています。chabudaiという文字列があれば"end"というラベルのフレームまでジャンプするように指示しています。

ACTIONSCRIPT:
  1. // クッキーをセット
  2. var msg:String = "chabudai";
  3. flash.external.ExternalInterface.call("setMyCookie", msg);

↑クッキーを保存したいタイミングのところに書くスクリプト
ここでもExternalInterfaceでjavascriptを呼び出しています。
この時点でクッキーに"chabudai"という文字列が保存されます。

flaファイルも一応アップしておきます。(flash8以上)

ローカルで試すときはFlashを貼るhtmlソースにallowScriptAccess="always"のパラメータを足さないと動かないと思います。

COMMENTS [4]

  1. iwata :

    はじめまして。
    こちらのサンプルを使わせていただきたいと思っているのですが
    ブラウザがIEだと上手く動かないようです。
    何か回避策はご存知でしょうか。

    よろしくお願い致します。m(_ _)m

    10 月 28th, 2009 at 11:05:03
  2. chabudai :

    >iwataさん
    コメントありがとうございます。管理人のchabudaiです。
    今見たらFireFoxでも動かなくなってるみたいですね。
    ちょっと調べてみますー。

    10 月 29th, 2009 at 2:00:37
  3. iwata :

    よろしくおねがいします!

    Fxはついこの間までちゃんと動いていたので
    バージョンが上がったからかもしれませんね。

    10 月 29th, 2009 at 22:02:44
  4. トリーバーチ ショルダー :

    オメガ オーバーホール

    8 月 3rd, 2013 at 16:56:18

トラックバック URL :