2005年 02月 12日
もまいら SharedObject.flush()をちゃんと使いなさい。
|
ActionScriptのお話
最近のFlashゲームはちゃんとデータを保存してくれるようになっているようで
なかなかいいことなのですが、データが消えたとかバグったとかよく聞く話。
これの原因はFlashがデータを保存する領域を確保できなかったってことらしいのですが
本当はこれ、気をつけていれば起こらないことなのです。
というのもflashはデータを保存する時に容量オーバーすると
容量を増やしていいですか?というメッセージを表示するのです。
なので勝手に消えたってことは無いはずなのに実際起こっている。
実は保存するタイミングが2種類あるらしく、SharedObject.flush()を宣言した瞬間と
Flashが終了する瞬間に、SharedObject.dataの中のデータが保存されるんですね。
ところがどうもいろいろなHowToサイトを見ていると、flush()の方を教えていない。
終了する時にオートで保存するのに任せてしまうと、もしこの時保存領域をオーバーしても
容量オーバーメッセージがでないわけですよ。
ということはデータが消えちゃうかもしれないと。
さらに言うとゲーム中にリアルタイムでSharedObject.dataにゲームのデータをつっこんでおくのも×。
なぜかといえばゲーム中にフリーズが起こったり、強制終了したりなんかの時に
中途半端な形でデータが保存されちゃうことがあるからですね。
というわけで、SharedObjectを使うときは全てのデータを別の変数に入れておき
保存する時にだけSharedObject.dataに値を入れて素早くSharedObject.flush()としてやる。
これでデータが消える危険性を最大限防ぐことが出来ます。
ああ、あとSharedObject.getLocal()するときも
SharedObject.getLocal("hogehoge", "/")ってしてあげましょう。
2つ目の引数を省略するとデータはファイルの階層位置にあわせた場所に保存されてしまい、
早い話がファイルを移動しただけでデータが参照できなくなります。
まあこれでもドメインが違う場合は共有できませんが、ローカルに保存してゲームしていて
フォルダを移動したらデータが消えちゃった!なんて事にならないようにしておく方がいいかと。
もしくは独自のフォルダを指定してもいいですね。
最近のFlashゲームはちゃんとデータを保存してくれるようになっているようで
なかなかいいことなのですが、データが消えたとかバグったとかよく聞く話。
これの原因はFlashがデータを保存する領域を確保できなかったってことらしいのですが
本当はこれ、気をつけていれば起こらないことなのです。
というのもflashはデータを保存する時に容量オーバーすると
容量を増やしていいですか?というメッセージを表示するのです。
なので勝手に消えたってことは無いはずなのに実際起こっている。
実は保存するタイミングが2種類あるらしく、SharedObject.flush()を宣言した瞬間と
Flashが終了する瞬間に、SharedObject.dataの中のデータが保存されるんですね。
ところがどうもいろいろなHowToサイトを見ていると、flush()の方を教えていない。
終了する時にオートで保存するのに任せてしまうと、もしこの時保存領域をオーバーしても
容量オーバーメッセージがでないわけですよ。
ということはデータが消えちゃうかもしれないと。
さらに言うとゲーム中にリアルタイムでSharedObject.dataにゲームのデータをつっこんでおくのも×。
なぜかといえばゲーム中にフリーズが起こったり、強制終了したりなんかの時に
中途半端な形でデータが保存されちゃうことがあるからですね。
というわけで、SharedObjectを使うときは全てのデータを別の変数に入れておき
保存する時にだけSharedObject.dataに値を入れて素早くSharedObject.flush()としてやる。
これでデータが消える危険性を最大限防ぐことが出来ます。
ああ、あとSharedObject.getLocal()するときも
SharedObject.getLocal("hogehoge", "/")ってしてあげましょう。
2つ目の引数を省略するとデータはファイルの階層位置にあわせた場所に保存されてしまい、
早い話がファイルを移動しただけでデータが参照できなくなります。
まあこれでもドメインが違う場合は共有できませんが、ローカルに保存してゲームしていて
フォルダを移動したらデータが消えちゃった!なんて事にならないようにしておく方がいいかと。
もしくは独自のフォルダを指定してもいいですね。
by tail_y
| 2005-02-12 21:30
| Flash制作