在同一页上3个或更多相同的闪光对象之间(AS3)同步数据((as3) Sync data betwe

2019-09-30 07:37发布

我也问过类似的事情之前,但从来没有去解决,我需要。 所以,我开始一个新的堆栈不是迷惑我的问题,并作出更清晰一点。

我需要做什么

我有一个HTML页面上有多个Flash对象,他们都是相同的,他们都需要在正确的时间可以同步。 在当前状态下,每一个查询时间服务器,并获取时间,伟大的工程。 但我想实现的是第一个负载是同步的与时间服务器只有一个,然后其他的Flash对象等待它完成,并从一个加载的同步时间。

问题

共享对象:在纸面上,这有缝像是一个完美的解决方案,我得到的第一个1载入保存如此“timestarted”,如果在此之后的任何加载闪存看到这个如此,它等待“同步时间”,所以被创建,加载...太棒了! 但是,没有...共享对象只出现在SO加载在加载闪存,任何改变,或新的SO闪存加载后是完全未知的任何其他闪存而不是创建它的人的时候了! (直至闪光灯重新加载)... DOH

方LocalConnection:有点复杂,但听起来像一个很好的解决方案,除了只有一个闪光灯可以在任何时候打开连接,GAH!

我需要的

简单来说,我需要一种方法来有一个Flash对象申报本身作为sync'er,和别人听好了! 东西我以为会是这么简单,而是转向了这么复杂。 我需要任何建议,做什么意见。

Answer 1:

如果你可以使用JavaScript的一点点,你可以用做ExternalInterface的 。 有电影召唤出一个小JS脚本,用于跟踪谁正在加载时间,然后有其他的闪烁只是注册回调。 一旦第一闪光灯时,调出该js和让这种更新其他两个。



Answer 2:

我想你真正需要的是LocalConnection对象https://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/

这将让您的SWF对彼此交谈。



Answer 3:

也许我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?



文章来源: (as3) Sync data between 3 or more identical flash objects on the same page