ASOK?
ActionScriptでFlashつくるよ
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
page top

ローカルSharedObjectでちょっとはまった件。

いったん保存したローカルSharedObjectは、FlashPlayer設定マネージャの[Web サイトの記憶領域設定] パネルで、ドメインごとに削除することができる。

ローカルSharedObjectを使ったFlashで、最初のロード時、つまりSharedObjectにまだデータが保存されていない状態をテストしようとした。
ところが設定マネージャで削除して、Flashをリロードしてもデータが保存されている。

ヒントはドキュメントにあった。

flush (SharedObject.flush メソッド )
public flush([minDiskSpace:Number]) : Object
ローカル永続共有オブジェクトをすぐにローカルファイルに書き込みます。このメソッドを使用しない場合、共有オブジェクトがファイルに書き込まれるのは、そのオブジェクトのセッションが終了した時点となります。つまり、その SWF ファイルを閉じた時点、その共有オブジェクトに対する参照がなくなってガベージコレクションされた時点、 または SharedObject.clear() が呼び出された時点のいずれかです。

ローカルSharedObjectに書き込みをしSharedObject.flush()を使わなかった場合、実際にHDDに保存されるのは、swfファイルが閉じた時点。

つまり先のテストでは、以下のようなことが起こっている。

  1. テストFlash内でローカルSharedObjectに書き込む。この時点ではまだHDDには保存されていない。
  2. 設定マネージャでローカルSOを削除。
  3. テストFlashをリロードする。
  4. テストFlashが閉じられ、ローカルSOのデータが実際にHDDに書き込まれる。
  5. テストFlashが新たにロードされ、HDDからローカルSOデータが読み込まれる。

結論

適切なタイミングで、SharedObject.flush()を使いましょう。

ここで、ローカルSharedObjectに書き込んだらすぐにSharedObject.flush()を使用する、と結論するのは間違い。わざわざ遅延書き込みするのは、おそらくパフォーマンスのせいなので。

スポンサーサイト
page top
BitmapData.draw()の拡大縮小って、2のべき乗倍に最適化されていたりするのだろうか。
そのうち調べよう。
page top
Copyright © 2005 ASOK?. all rights reserved.

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。