Shared Object

FlashMXからローカルにデータを保存することが可能になりました。このデータはFlashの単体プレイヤーからもアクセス可能なので、スケジュール帳などをアプリケーション形式で使用する際などにも有効です。

●サンプル
なにかを入力してSAVEボタンを押し、再度このページにアクセスすると入力した内容が表示されます。

■データの保存方法

  1. SharedObjectインスタンスの生成
    「任意のSharedObjectインスタンス名 = SharedObject.getLocal("任意のファイル名");」という形式になります。
    例)mySharedObject = SharedObject.getLocal("sample");
  2. データの保存
    「SharedObjectインスタンス名.data.保存変数名="保存したいデータ";」という形式で、左辺に代入することによって保存がおこなわれます。
    例}mySharedObject.data.strData = "保存したいデータの内容";
    日本語も使用可能ですし、変数や配列を代入して保存することも可能です。
  3. データの参照
    通常のアクセスで取得可能です。
    例}trace(mySharedObject.data.strData);で「保存したいデータの内容」と出力されます。

■データの格納場所

保存データは、先ほどの"任意のファイル名"に「.sol」という拡張子をつけて保存されます。格納場所は各OSによって違いがありますが、同じような場所に格納されていると思われます。

  • MacOS9.1
    システムフォルダ>初期設定>Macromedia>FlashPlayer>ドメイン名>.......
  • MacOS10.4
    ユーザ>(ユーザ名)>ライブラリ>Preferences>Macromedia>FlashPlayer
    >#SharedObjects>.......
  • WinNT
    C:Winnt\Profiles\(ユーザ名)\Application Data\Macromedia\FlashPlayer\......
  • Win2000,WindowsXP
    C:Documents and Settings\(ユーザ名)\Application Data\Macromedia\FlashPlayer\....

FlashPlayer以下の階層は各ドメインごとに管理され、ローカルファイルは「localhost」というディレクトリに格納されます。また、それ以下の階層はルートからの構造をそのまま継承しますので、ローカルの深い階層に存在するswfから保存すると、localhost内に同じだけの階層のディレクトリが大量生成されてしまいます。

このように、swfごとに保存されますので、同じswfを参照している場合、違うWebブラウザからアクセスしても同じ内容を見ることができます。(双方にFlash6Playerがインストールされているひつようがありますが)

逆に、データ保存後にswfファイルを別階層に移動すると、保存したデータを参照できなくなるので注意が必要です。ただ、「SharedObject.getLocal」ではオプションとしてローカルパスを指定できますので、それによって回避できる場合もあります。
例)mySharedObject = SharedObject.getLocal("sample","/");
この例ではデータをルートに保存しますので、それ以下のどの階層からでも参照できます。また、ローカルパスを指定することによって、複数のswfから同一のデータを参照することも可能です。

また、Cookieとは別の扱いになりますので、ユーザのWebブラウザ側でCookieを無効にしていても強制的に書き込まれます。このあたりの仕様は後々変更になるかもしれませんが、閲覧者のディスクに強制的にデータを残すことになるということは念頭に置いておいてください。

保存された「.sol」ファイルをエディタで開いて変更する事はできませんでした。一旦保存してしまうと、エディタ上ではデータが閲覧できるものの、FlashPlayerには読み込まれなくなります。再度swfから書き込むと次からは見ることができます。

サンプルファイルダウンロード(ZIP圧縮/8KB)


webmaster@mamnag.org
COPYRIGHT 2002 MAMNAG.ORG ALLRIGHT RESERVED