1

私は学校のクリスマスカレンダーに取り組んでいますが、それに気付いたとき、日付クラスは私がそうであったものではありませんでした。

それはクライアントCPUから時間を取得しますが、それではうまくいきません。

それで、私はウェブを見回していましたが、良い答えはありませんでした(少なくとも私が理解できること)。

だからここにあります:

フラッシュプログラムがホストされているサーバー、または外部のタイムサーバーから、UTC +1で時刻と日付(*)を取得するにはどうすればよいですか?

* UNIX時、または他の方法でactionscript3が理解できる場合

回答を検索したところ、いくつかのphpスクリプトの提案がありましたが、その使用方法がわかりません(いくつかの例がありますが、AS2の場合です)。

4

3 に答える 3

1

次のように、swf ファイルに日付を渡すことができます。

<param name=FlashVars value="date=<?php date(); ?>" />

swf ファイルに日付を渡す方法について詳しくは、http: //helpx.adobe.com/flash/kb/pass-variables-swfs-flashvars.htmlをご覧ください。 また、日付をフォーマットする方法については、 http: //php.net/manual/en/function.date.php

このバリアントでは、.html ファイルの名前を .php に変更する必要があります。

于 2012-09-20T20:02:05.423 に答える
1

これを行うためのより安全な方法 (たとえば、改ざんできるフラッシュ変数を使用しない) は、日付を出力する非常に単純なサーバー ページ (html ではなくプレーン テキストを出力する) を作成し、それをローダーでフラッシュにロードすることです。それをネイティブ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 
    header("Content-Type: text/plain");
    print time() * 1000;
?>
于 2012-09-20T21:25:44.633 に答える
0

要約すると、答えはこれだけを含む php スクリプトです。

<?php 
header("Content-Type: text/plain");
print time();
?>

サーバーから時間を取得するために使用するスクリプトは次のとおりです。

//cut from a larger script
{
loader = new URLLoader();
loader.load(new URLRequest("http://grambogames.net/serverTime.php"));
loader.addEventListener(Event.COMPLETE, onServerTimeLoad);
trace("waiting for time to load");
}



private function onServerTimeLoad(e:Event):void
{
trace("date loaded:", loader.data);
try
{
    var num:Number = Number(loader.data) * 1000
    dato = new Date(num);
    trace("tid & dato synkronisert med server.", dato);
}
catch (e:Error)
{
    //the passed date was invalid, lets just use the local system date
    dato = new Date();
    trace("date did not work, local time used");
    txt_error.text = "ERROR! COULD NOT GET TIME FROM SERVER!"
}
    if (! dato)
{
    //your output from the server isn't formatted in a way flash can convert it
    trace("not working, date farmated wrong");
}
}

LondonDrugs_MediaServices に感謝

...これ以上バグが発生しないことを願っています。

于 2012-09-24T20:11:05.303 に答える