我也问过类似的事情之前,但从来没有去解决,我需要。 所以,我开始一个新的堆栈不是迷惑我的问题,并作出更清晰一点。
我需要做什么
我有一个HTML页面上有多个Flash对象,他们都是相同的,他们都需要在正确的时间可以同步。 在当前状态下,每一个查询时间服务器,并获取时间,伟大的工程。 但我想实现的是第一个负载是同步的与时间服务器只有一个,然后其他的Flash对象等待它完成,并从一个加载的同步时间。
问题
共享对象:在纸面上,这有缝像是一个完美的解决方案,我得到的第一个1载入保存如此“timestarted”,如果在此之后的任何加载闪存看到这个如此,它等待“同步时间”,所以被创建,加载...太棒了! 但是,没有...共享对象只出现在SO加载在加载闪存,任何改变,或新的SO闪存加载后是完全未知的任何其他闪存而不是创建它的人的时候了! (直至闪光灯重新加载)... DOH
方LocalConnection:有点复杂,但听起来像一个很好的解决方案,除了只有一个闪光灯可以在任何时候打开连接,GAH!
我需要的
简单来说,我需要一种方法来有一个Flash对象申报本身作为sync'er,和别人听好了! 东西我以为会是这么简单,而是转向了这么复杂。 我需要任何建议,做什么意见。
如果你可以使用JavaScript的一点点,你可以用做ExternalInterface的 。 有电影召唤出一个小JS脚本,用于跟踪谁正在加载时间,然后有其他的闪烁只是注册回调。 一旦第一闪光灯时,调出该js和让这种更新其他两个。
我想你真正需要的是LocalConnection对象https://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/
这将让您的SWF对彼此交谈。
也许我misunderstading的问题,但这个工程:
第一SWF(syncher):
进口flash.net.SharedObject在; 进口flash.utils.Timer;
小时是:字符串; 分别小时值:整数; 为TF:文本字段;
的init();
功能的init():无效{
var timer:Timer = new Timer(1000); timer.addEventListener(TimerEvent.TIMER, blah); timer.start(); tf = new TextField(); addChild(tf); SharedObject.getLocal("timer","/")
}
功能等等(E:TimerEvent):无效{TIMEVALUE ++; SharedObject.getLocal的( “定时器”, “/”)data.timer = TIMEVALUE。 迹(SharedObject.getLocal的( “定时器”, “/”)data.timer。); 。SharedObject.getLocal的( “定时器”, “/”)平齐();
tf.text = timeValue.toString();
}
第二SWF(synchee)
进口flash.net.SharedObject在; 进口flash.utils.Timer;
是小时:字符串; 是时间值:整数; 为TF:文本字段;
在里面();
功能的init():无效{
var timer:Timer = new Timer(100);
timer.addEventListener(TimerEvent.TIMER, blah);
timer.start();
tf = new TextField();
addChild(tf);
}
功能等等(E:TimerEvent):无效{TIMEVALUE = SharedObject.getLocal的( “定时器”, “/”)data.timer; tf.text = timeValue.toString(); tf.text = timeValue.toString(); } }
我知道他们是不完全相同,但它会很容易保存一个“装”属性格式的SO,所以随后加载的SWF的知道他们是synchees,不是syncher?