Actionscript 3 Actionscript 3:如何从服务器(而不是客户端)获取日期

Actionscript 3 Actionscript 3:如何从服务器(而不是客户端)获取日期,actionscript-3,Actionscript 3,我正在为我的学校制作圣诞日历,这时我注意到,约会课不是我想象的那样 它从客户端CPU获取时间,但这不行 所以,我一直在网上四处寻找,但是没有好的答案(至少我能理解) 这就是: 如何从我的flash程序所在的服务器或某个外部时间服务器获取UTC+1中的时间和日期(*) *在UNIX时代,或者以其他方式actionscript 3可以理解 我在搜索答案时对一些php脚本提出了建议,但我不知道如何使用这些脚本(这里有一些示例,但它们在AS2中的位置)。您可以像这样将日期传递到swf文件: <pa

我正在为我的学校制作圣诞日历,这时我注意到,约会课不是我想象的那样

它从客户端CPU获取时间,但这不行

所以,我一直在网上四处寻找,但是没有好的答案(至少我能理解)

这就是:

如何从我的flash程序所在的服务器或某个外部时间服务器获取UTC+1中的时间和日期(*)

*在UNIX时代,或者以其他方式actionscript 3可以理解


我在搜索答案时对一些php脚本提出了建议,但我不知道如何使用这些脚本(这里有一些示例,但它们在AS2中的位置)。

您可以像这样将日期传递到swf文件:

<param name=FlashVars value="date=<?php date(); ?>" />
var loader:URLLoader = new URLLoader()
loader.load(new URLRequest("your server page"))
loader.addEventListener(Event.COMPLETE, onLoaded)
function onLoaded(evt:Event){
    var date:Date;
    try{
        date = new Date(Number(loader.data)); //need to cast the loader data as a number
    }catch(e:Error){
    }

    if(!date){
        //your output from the server isn't formatted in a way flash can convert it
        date = new Date(); //use local time
    }
}

一种更安全的方法(例如不使用可能被篡改的flash变量)是创建一个非常简单的服务器页面(输出纯文本而不是html),输出日期,然后用加载程序将其加载到flash中,并将其解析为本机
日期
对象

闪光面将如下所示:

<param name=FlashVars value="date=<?php date(); ?>" />
var loader:URLLoader = new URLLoader()
loader.load(new URLRequest("your server page"))
loader.addEventListener(Event.COMPLETE, onLoaded)
function onLoaded(evt:Event){
    var date:Date;
    try{
        date = new Date(Number(loader.data)); //need to cast the loader data as a number
    }catch(e:Error){
    }

    if(!date){
        //your output from the server isn't formatted in a way flash can convert it
        date = new Date(); //use local time
    }
}

使用try/catch的原因是,如果服务器的输出不是有效日期,则在尝试转换时会抛出错误。如果在try块内的任何位置抛出错误,它将在错误行退出(跳过其余代码)并运行catch块中的内容。如果try块中没有错误,catch块中的代码将永远不会运行


使用PHP(虽然我手边没有PHP可供检查,因此可能需要有人来纠正这一点,而且我已经用它编程10年了)


因此,要概括一下,答案是一个只包含以下内容的php脚本:

<?php 
header("Content-Type: text/plain");
print time();
?>
多亏了伦敦大学的媒体服务


…我只是希望没有更多的bug出现。

这是一个很好的答案,如果不担心篡改,这是一个完全可以接受的方法。我稍后会仔细研究这个问题,谢谢你的回答。我的时间很短。但是对于一个简单的datestring来说应该很好。希望能有帮助。我有一个大问题,一个小问题,还有一个谢谢。1:我如何写你建议的服务器页面?他说:你是怎么做的?3:谢谢您的帮助。问题1取决于您使用的服务器端编程语言。(PHP、ASP、JSP等)。如果你让我知道你可以使用哪一个,我会在答案中包括一个样本。我更新了这个问题来解释try/catchWell,因为我有根访问权限,我相信任何语言都可以。但是,因为我从来没有听说过ASP或JPS,所以应该是php(我对它有了一些了解)。我在回答中给出了一个php示例,没有办法测试它,所以您可能需要进行一些实验。谢谢,它看起来很有效。稍后我将进行更多的实验,以确保没有意外的bug或错误。关于这个主题,我发现了一个错误:php脚本中的“time()”函数返回的时间是毫秒,而不是秒,它不应该乘以1000。(在这里值得修复,以防其他人因同样的问题需要帮助)。你有什么服务器/主机?我的主机是Hosting24.com我可以通过FTP完全访问文件,还有一个名为“cPanel”的文件浏览器。我的网站是www.grambogames.net