Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
(as3)在同一页面上的3个或更多相同flash对象之间同步数据_Flash_Actionscript 3_Synchronization_Localconnection_Shared Objects - Fatal编程技术网

(as3)在同一页面上的3个或更多相同flash对象之间同步数据

(as3)在同一页面上的3个或更多相同flash对象之间同步数据,flash,actionscript-3,synchronization,localconnection,shared-objects,Flash,Actionscript 3,Synchronization,Localconnection,Shared Objects,我以前也问过类似的问题,但从来没有找到我需要的解决方案。因此,我开始一个新的堆栈,以避免混淆我的问题,并使一点更清楚 我需要做什么 我在一个html页面上有多个flash对象,它们都是相同的,并且都需要与正确的时间同步。在其当前状态下,每一个都查询timeserver并获取时间,这非常有效。但我想实现的是,第一个加载的对象是唯一一个与时间服务器同步的对象,然后其他flash对象等待它完成,并从该对象加载同步时间 问题 共享对象: 在纸上,这就像一个完美的解决方案,我得到了第一个加载,以保存一个如

我以前也问过类似的问题,但从来没有找到我需要的解决方案。因此,我开始一个新的堆栈,以避免混淆我的问题,并使一点更清楚

我需要做什么

我在一个html页面上有多个flash对象,它们都是相同的,并且都需要与正确的时间同步。在其当前状态下,每一个都查询timeserver并获取时间,这非常有效。但我想实现的是,第一个加载的对象是唯一一个与时间服务器同步的对象,然后其他flash对象等待它完成,并从该对象加载同步时间

问题

共享对象: 在纸上,这就像一个完美的解决方案,我得到了第一个加载,以保存一个如此“timestarted”,如果任何加载闪光之后,看到这一点,它等待一个“synctime”以便创建,并加载…太棒了!但是没有。。。SharedObjects仅在加载flash时才显示加载SO,加载flash后的任何更改或新SO对于创建它的任何其他flash都是完全未知的!(直到重新加载闪存)…doh

本地连接: 稍微复杂一点,但听起来像是一个很好的解决方案,除了在任何时候只有一个闪存可以打开连接,嘎

我需要什么


简单地说,我需要一种方法让一个flash对象声明自己为sync'er,让其他对象监听!有些事情我原以为很简单,但结果却很复杂。我需要任何关于如何做的建议和建议。

如果你能使用一点点javascript,你可以使用。让电影调用一个小的js脚本,跟踪谁在加载时间,然后让其他动画只注册回调。一旦第一个flash有时间,调用js并让它更新另外两个。

我认为您真正需要的是LocalConnection对象


这将允许您的swf彼此对话。

也许我误解了这个问题,但这是有效的:

第一个swf(同步器):

}

函数blah(e:TimerEvent):无效{ timeValue++; SharedObject.getLocal(“timer”,“/”).data.timer=timeValue; 跟踪(SharedObject.getLocal(“timer”、“/”).data.timer); SharedObject.getLocal(“计时器”、“/”).flush()

}

第二swf(synchee)

导入flash.net.SharedObject; 导入flash.utils.Timer

变量时间:字符串; var时间值:int; var-tf:TextField

init()

函数init():void{

}

函数blah(e:TimerEvent):无效{ timeValue=SharedObject.getLocal(“timer”、“/”).data.timer; tf.text=timeValue.toString(); } 我知道它们不完全相同,但将“已加载”属性保存到SO很容易,所以随后加载的swf知道它们是同步,而不是同步

import flash.net.SharedObject; import flash.utils.Timer;

var time:String; var timeValue:int; var tf:TextField;

init();

function init():void{

var timer:Timer = new Timer(1000);
timer.addEventListener(TimerEvent.TIMER, blah);
timer.start();

tf = new TextField();
addChild(tf);

SharedObject.getLocal("timer","/")
tf.text = timeValue.toString();
var timer:Timer = new Timer(100);
timer.addEventListener(TimerEvent.TIMER, blah);
timer.start();

tf = new TextField();
addChild(tf);