2012-03-27 5 views
0

이 멋진 액션 스크립트 및 플래시 전체에 초보자를 용서하십시오. 어떤 의견이 나기 전에, 나는 지금 당장은 좋은 답변을 찾아왔다. 행운이 없으므로 여기에있는 몇 개의 배신자에게 질문을 던질 것이라고 생각했다.시간 서버에서 시간 가져 오기 flash (as3)

여기 있습니다. 내가 성취하려고하는 것은 두 가지 간단한 아날로그 세계 시계 (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이 있어야합니까?

위에서 언급 한 아래의 코드로를 inputing에 대해 갈 얼마나 사실 작업에 전능하신 픽셀의 은혜에 의해 경우 :이 약간이었다로

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

@wvxvw 신속한 응답을위한 건배! 나는 서버 시간을 표시 할 하나의 서버에 2 클럭을 요구한다. (다른 서버는 GMT이다.) 분명히 나는 ​​잘못된 경로를 따라 가고있다. – Plastika

답변

0

흥미로운 점은 NTP (Network Time Protocol)입니다. 이것은 UTC 형식의 현재 시간 인 4 바이트의 데이터를 보내는 일반 TCP 스트림입니다.

플래시의 문제는 당신이 임의의 서버에 일반 TCP 요청을 보낼 수 없다는 것입니다 - 플래시 서버가 허용 정책 응답을 전송해야합니다. 따라서 NTP 서버에서 얻은 응답을 프록시 처리해야합니다 (또는 간단하게 만들려면 서버의 시스템 날짜를 출력 스트림에 인쇄하면됩니다). 그리고 Flash에서 스크립트를 호출해야합니다.

여기에 내가 PHP http://www.xenocafe.com/tutorials/php/ntp_time_synchronization/index.php에 기록 된 몇 가지 예를 NTP 동기화 스크립트를 발견했다. 동기화 부분은 필요 없으며 두 대의 시간 서버에 연결하려고 시도하는 부분 만 응답을받습니다.

은 연결 시간, 그러나, 당신은 데이터를 클라이언트로 이동하는 데 걸리는 평균 시간을 계산하는 시도 할 수 있습니다 걸립니다 서버에 플래시 클라이언트에서 데이터를 전송로, 매우 정확하지 않습니다. 귀하의 행동 방침은 다음과 같습니다 :

  1. 서버 스크립트의 현재 날짜를 Flash로 보냅니다.
  2. 플래시가 날짜를 받으면 플래시가 다시 전송합니다.
  3. setps 1과 두 번 반복하여 여행에 소요되는 평균 시간을 계산하기에 충분한 데이터를 수집하십시오. RT0, RT1, ... RTN : 응답을 보내는 서버 시간이 응답을 수신 ST0, ST1 ... STN와 서버 번 호출 할 수 있습니다. 평균 이동 소요 시간은 (RT0 - ST0 + RT1 - ST1 + ... RTN - STN)/(2 * N)입니다.
  4. 그런 다음 델타를 기록하고 서버와 동기화하려고 할 때마다 플래시로 전송 된 시간에 추가합니다.

다시 말하지만, 얼마나 정확하게 원하는지에 따라 다릅니다. 요청 출력 스트림에 날짜를 인쇄하고 NTP 서버 등을 위해 서버를 이동/절대로 동기화하지 않는 시간을 무시할 수 있습니다.

+0

참으로 흥미 롭다. 유지는 페이지 새로 고침시 쿼리가 충분할 것입니다. 그래서 나는 내 서버와 플래시에 PHP 스크립트를 배치하여 시간을 가져올 수있다. 검색된 서버 시간을 onTick 함수로 구현하는 방법은 무엇입니까? – Plastika

관련 문제