七个月前我在StackOverflow中问this question,但显然没有人能给我一个满意的答案。我搜索整个互联网无济于事。所以我再次在这里发布,希望这可以解决所有人的好处。请耐心等待,因为我真的需要这样做。
到目前为止,这是我的代码。
import flash.net.SharedObject;
import flash.events.SyncEvent;
import flash.events.MouseEvent;
var nc:NetConnection;
var so:SharedObject;
nc = new NetConnection();
nc.client = { onBWDone: function():void{} };
nc.addEventListener(NetStatusEvent.NET_STATUS, onNetStatus);
nc.connect("rtmp://localhost:1935/live");
var t = new TextField();
addChild(t);
var c = new TextField();
c.y=100;
c.text="SET SO";
addChild(c);
c.addEventListener('click',sd);
function sd(e:MouseEvent):void{
so.setProperty("total",3);
//so.setDirty("total");
//trace("a"+so.data.total);
}
function onNetStatus(event:NetStatusEvent):void{
if(event.info.code == "NetConnection.Connect.Success"){
so = SharedObject.getRemote("shObj",nc.uri);
so.addEventListener(SyncEvent.SYNC,syncHandler);
so.connect(nc);
so.setProperty("total",2);
}
}
function syncHandler(event:SyncEvent):void{
if (so.data.total) {
t.text = so.data.total;
}
}
当我点击文字' SET SO'时,我希望看到数字3。但是,似乎syncHandler永远不会被触发。我该怎么做才能让它发挥作用?我错过了什么吗?服务器是否正确链接?