SharedObject?
どうも、
以前安藤君の記事でも取り上げられていたSharedObjectについて。初めて使った時の疑問点なりなんなりのメモと、海賊王を目指す"冒険王"こと松村さんから教えて頂いた内容を合わせて今回は書いて行こうと思います。
・「Flashを開いた回数を調べたい」「一度目だけ説明画面を表示して、二度目に来たユーザーには説明画面は省略させる」っと言ったことが覚える際の切っ掛けになった訳ですが、そもそも初めて見たとき、
var so:SharedObject=SharedObject.getLocal("あいうえお");
っと書くその形から、「初めて見る書き方だけど、 "var"使ってるし、変数と同じってことだろ。」っと予測。「変数=何かを入れておく箱」のイメージなので初見は
こんな感じでした。
ですが、これでなぜFlashが再生されたかどうか分かるのかわからない。全く理由がわからず使うのも不安。
そんな時、 SharedObjectはFlashのデータをローカルで保存しておけるスペースを作る事。っと言う事を松村さんから教えてもらいました。
ちなみに変数と同じ様に考えていた理由として、"あいうえお"のところがSharedObjectの名前ではなく、箱に入れる情報だと考えていたという点も有ります。
直感的に自分の頭の中で構築されたイメージとしては・・
こんな感じでした。
SharedObjectというスペースの中にはいくつでも情報を入れておけるので、
例えばユーザーのPWやIDを保存して置く事が出来ます。
「一回目だけ説明画面を表示」としたいときは条件分岐で情報が入っていれば非表示と設定すれば、一回目再生した時にこのスペースには何も情報が無いので、情報の有る二回目以降から非表示にする事が出来るというわけだったんですね。
ちなみにSharedObjectは放っておくとローカルに情報を残したままになってしまうので、2回目のプレビューから動作が確認出来なくなる為、以下の様なものを用意しておくと便利でした。
// SharedObject をクリアするときステージをクリック!
stage.addEventListener(MouseEvent.MOUSE_DOWN,sharedClear);
function sharedClear(event:MouseEvent):void {
so.clear();
trace("クリアー");
}