[Flex] Cookieのように設定を保存する
Flexでは、JavaScript経由であれば、Cookieにアクセスして、値の保存や取得ができます。
でも、そんなことをしなくてもFlashにはSharedObjectという仕組みがあり、Cookieよりも手軽に大きいデータをやり取りできます。
使い方も簡単で、
設定保存するには、
var so: SharedObject = SharedObject.getLocal("setting1"); so.data.userId = "test"; so.data.password = "pass"; so.data.saveUserId = true; so.flush();
設定を読み込むには、
var so: SharedObject = SharedObject.getLocal("setting1"); trace(so.data.userId); trace(so.data.password ); trace(so.data.saveUserId );
これだけです。とても簡単です。
Cookieと違って、期限はないので基本永続的に保持しています。
ただし、IEで試したところ、インターネットオプションから閲覧履歴の削除を行ったところ、設定が削除されました。
この仕様はブラウザによるようです。
ちなみにこの設定が保存されるのはWindows7の場合だと
C:\Users\[userId]\AppData\Roaming\Macromedia\Flash Player\#SharedObjects
配下にいくつかフォルダができ、その下に[getLocalで指定した名前].solで保存されており、AMF3形式のようです。
上記のような指定をした場合、作成するSWFごとに設定が分かれます。
SWFファイルまでのドメインフォルダが作成されます。
複数のSWF間で値を共有したい場合は、
SharedObject.getLocalの第2引数にパスを指定する必要があります。
全体で共有する場合は、SharedObject.getLocal(“setting1”, “/”);
となります。この場合は名前をかぶらないようにしないと、思わぬところで設定が読み書きされるかもしれません。
SharedObjectにはそこそこ大きなデータが入れられるようですが、Flashの設定で最大容量が決められていますので、
あまり大きなデータを入れないほうが良いと思います。
この機能をうまく使えばサーバー側で個人の設定情報を持たなくても良いのでとても便利です。
設定が消えることもあることを前提に実装しておく必要がありますが。
== ランキングに参加しています。ぜひクリックお願いします ==
javascriptでreplaceAll プログラミングにお勧めフォント