「sharedObj」というものの存在は知っていたが、使えていなかった。以前少し使ってみた時は、保存してるはずなのにどこにもファイルが見つからなくて、結局あきらめてしまっていた。
 うまくいかなかった原因は、sharedObjのことを『Flashがローカルに保存できるファイルの形式』と捉えていたのでうまくいかなかったようだ。ちゃんと調べてみると、何てことはない。sharedObjは『Flash版Cookie』だった。例えば、

http://www.karappo.net/A/test.swf

のようなアドレスに置かれたSWF内で


var mySO = SharedObject.getLocal("mySO");


などと、sharedObjが呼び出されると、ローカルの下記フォルダのsharedObj(.solが拡張子)
が読み込み、もしくは作成される。この時の保存先は、


> Macの場合
User/Library/Preferences/Macromedia/Flash Player/#SharedObjects/
TSGAQQ6S
/www.karappo.net/A/test.swf/mySO.sol

> Winの場合
C:\Documents and Settings/User/Application Data/Macromedia/Flash Player/#SharedObjects/
GUW2QVQB/www.karappo.net/A/test.swf/mySO.sol

注意:Windowsの場合、「Application Data」は隠しフォルダになっているのでメニューバーの「ツール」→「フォルダオプション」→「表示」で「全てのファイルとフォルダを表示する」にチェックしておかないと、見えません。

 TSGAQQ6SGUW2QVQBの部分は環境によって違うみたい。その後に続く階層がそのままオンラインの階層関係と一致している。同じSWF内で別の名前のsharedObjを呼び出すと.../test.swf/内に追加される仕組み。試しに自分の環境を見てみると、意外と知らないうちに保存されている(↓図)。ローカルのSWFからも..#SharedObjects/GUW2QVQB/localhost/以下に保存される。

folder

まさに、Cookie(しかも簡単!)今までは「ローカルに保存」=「SWFと同じ階層に保存」と、何故か完全に勘違いしていたのだった。


実際に書き込む時、参照する時は、


mySO.data.○○ = △△;
□□ = mySO.data.○○ ;

のように書く。
普通は終了時に書き込まれるらしいので、即時書き込みしたい時は、

mySO.flush();

と書く。