私は、共有オブジェクトがどのように動作するかを理解しようとして、いじくり回してきました。この基本的な実際の例では、Flash Media Server を使用しているため、getLocal を使用する代わりに sharedObject.getRemote を選択しています。setProperty method() でいくつかのデータの値を更新しました。そのデータが存在する場合は、データ プロパティから取得しようとします。アプリケーションを実行すると、出力パネルに次のように表示されます。
paris
250
true
ただし、未定義のプロパティへのアクセスが記載されています。コードを見て、私が間違っていることを教えてください。
import flash.net.NetConnection;
import flash.events.NetStatusEvent;
import flash.net.SharedObject;
import flash.events.SyncEvent;
var nc:NetConnection = new NetConnection();
nc.connect("rtmfp://localhost/sobjExample");
nc.addEventListener(NetStatusEvent.NET_STATUS, netHandler);
function netHandler(event:NetStatusEvent):void{
switch(event.info.code){
case "NetConnection.Connect.Success":
trace("Connected Up");
break;
case "NetConnection.Connect.Close":
trace("Closing time");
break;
case "NetConnection.Connect.Failed":
trace("Whoops");
break;
case "NetConnection.Connect.Rejected":
trace("Ouch!!!!!");
break;
}
}
var so:SharedObject = SharedObject.getRemote("city", nc.uri, true);
so.connect(nc);
so.addEventListener(SyncEvent.SYNC, seeSo);
function seeSo(event:SyncEvent):void{
trace(so.changeList[0].code);
switch(so.changeList[0].code){
case "clear":
loadSo();
break;
case "Success":
showSo();
break;
}
}
function loadSo():void{
so.setProperty("city", "Paris");
so.setProperty("bunch", "250");
} so.setProperty("verity", "true");
function showSo():void{
trace(so.data.city);
trace(so.data.bunch);
} trace(so.data.verity);