请原谅所有这些花哨的动作脚本的新手和Flash。 在发表任何评论之前,我现在一直在拖网寻找答案 - 没有运气,所以我想我会在这里的几个boffins上解决这个问题。
所以在这里。我想要完成的是两个简单的模拟世界时钟(我已经使用Jquery完成了)但IE已经证明是让这个工作正常的最大噩梦 - 所以我正在尝试一个不同的途径。
我编写了一个小脚本来检索服务器时间,如下所示:
var ldr:URLLoader = new URLLoader()
ldr.load(new URLRequest("http://chronos.csr.net"))
ldr.addEventListener(Event.COMPLETE, onLoaded)
function onLoaded(evt:Event){
trace(ldr.data)
}
有人能告诉我如何打印出上述语法的输出以确保它实际上有效吗?看到我从各种搜索中提取了一些代码 - 是否要求将url指向特定文件?
如果以上是全能的Pixel的优雅实际工作,那么如何将其输入下面的代码:
var now:Date;
var ct:Timer = new Timer(1000);
ct.addEventListener(TimerEvent.TIMER, onTick);
ct.start();
function onTick(event:TimerEvent):void{
now = new Date();
var s:uint = now.getSeconds();
var m:uint = now.getMinutes();
var h:uint = now.getHours();
second_hand_mc.rotation = 180 + (s * 6);
minute_hand_mc.rotation = 180 + (m * 6);
hour_hand_mc.rotation = 180 + (h * 30) + (m * 0.5);
}
并且请考虑到DST,因为这是一个轻微的陷阱,我甚至用JS(最终会解决这个问题,但时间不在我身边 - 请原谅双关语。)
非常感谢任何和所有帮助!
答案 0 :(得分:0)
你可能想要使用一个有趣的东西,它是NTP(网络时间协议)。它是一个普通的TCP流,它发送4个字节的数据,这是UTC格式的当前时间。
Flash中的问题是您无法向任意服务器发送纯TCP请求 - Flash要求服务器发送许可的策略响应。因此,您必须代理从NTP服务器获取的响应(或者,如果您想使其更简单,只需将服务器的系统日期打印到输出流),并从Flash调用脚本。
在这里,我找到了一些用PHP http://www.xenocafe.com/tutorials/php/ntp_time_synchronization/index.php编写的NTP同步脚本示例。您不需要同步部分,只需要尝试连接到几个时间服务器并获得响应的部分。
这不会非常精确,因为从Flash客户端连接和发送数据到服务器需要时间,但是,您可以尝试计算数据传输到客户端所需的平均时间。你的行动方针是:
ST0
,ST1
,... STN
和服务器接收响应的时间:RT0
,RT1
,. .. RTN
。然后是大约(RT0 - ST0 + RT1 - ST1 + ... RTN - STN) / (2 * N)
行进所需的平均时间。同样,所有这些都取决于你想要的精确程度。您只需将日期打印到请求输出流,并忽略旅行时间/从不将服务器与NTP服务器等同步。