SharedObjectでハマったよ(いまさら)。メモ。
複数SWFで同一のSharedObjectを所有していて、その変化を監視するってのをやっていて、setIntervalでチェックしていたわけですよ。
var so:SharedObject; // so.data.userName が他のSWFで書き換えられる
var userName:String; // 検証用の古いデータ
function check():Void{
so = SharedObject.getLoacal("hoge", "/");
if(so.data.userName != userName){
userName = so.data.userName; // 最新版を保持
// ここにさらに処理
}
}
var updater:Number = setInterval(check, 200);
まぁ、こんな感じで定期的にsolファイルを覗いていたつもりで。
でも、どうも変数 so が更新されてないっぽい。
悩むこと10分、どっかのサイトか本のこと書いてあったことを思い出す自分。
SharedObject.getLocal() ってシングルトンパターンじゃね?、と。
つまり毎回 getLocal() しても最初に生成したインスタンスが呼ばれているワケなんですね。。
そこで毎回 delete かましたら有効になりますた。
var so:SharedObject; // so.data.userName が他のSWFで書き換えられる
var userName:String; // 検証用の古いデータ
function check():Void{
delete so; // 一度削除
so = SharedObject.getLoacal("hoge", "/");
if(so.data.userName != userName){
userName = so.data.userName; // 最新版を保持
// ここにさらに処理
}
}
var updater:Number = setInterval(check, 200);
これでうまくいきましたー

Send Your Comment