Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как создать таймер не зависящий от времени компьютера (http://www.flasher.ru/forum/showthread.php?t=184628)

Wolsh 27.09.2012 09:43

Ошибка в том, что Вы берете местное время в форматтере, а надо брать универсальное.
Код AS3:

private function formatDate(d:Date):String {                        
        return f(d.getUTCHours()) + ":" + f(d.getUTCMinutes()) + ":" + f(d.getUTCSeconds());                       
}

Как-то так. У меня с нуля показывает, Ваш последний код показывал с новосибирским оффсетом — с 06:00:00.
Код AS3:

package ru.nsab.player {
        import flash.display.MovieClip;
        import flash.utils.Timer;
        import flash.events.TimerEvent;
 
        public class Clock extends MovieClip {
 
                private var _timer:Timer = new Timer(1000);
                private var _start:Date;
                private var _datePassed:Date = new Date();
 
                public function Clock() {}               
 
                public function start():void {
                        _start = new Date();
                        _timer.addEventListener(TimerEvent.TIMER, onTimer);
                        _timer.start();
                        updateClock();
                }
 
                private function onTimer(event:TimerEvent):void {
                        updateClock();
                }
 
                private function f(n:Number):String {
                        return n<10 ? "0"+n : n.toString();                               
                }
 
                private function formatDate(d:Date):String {                       
                        return f(d.getUTCHours()) + ":" + f(d.getUTCMinutes()) + ":" + f(d.getUTCSeconds());                       
                }
 
                private function updateClock():void {
                        var dateNow:Date = new Date();
                        var timePassed:Number = dateNow.getTime() - _start.getTime();
                        _datePassed.setTime(timePassed);
                        this["timeRunning"].text = formatDate(_datePassed);
                }
        }
}

А, ну и запуск:
Код AS3:

var clock:Clock = new Clock();
this.addChild(clock);
clock.x = clock.y = 100;
clock.start();

И да, учтите что в полночь карета превращается в тыкву.
Потому что это не таймер, а часы, на которых установили 00:00:00 и запустили. Показывать они все-равно будут время, а не количество часов, минут и секунд. То есть когда количество часов станет больше 23, поле "часы" начнет показывать с нуля, а не 24..25..26.

Keyles 21.10.2012 16:04

Ошибка в том, что Вы берете местное время в форматтере, а надо брать универсальное.
Поменяла, все отлично стало)

начнет показывать с нуля, а не 24..25..26.
это да. не думаю что его будут запускать на 23 часа. спасибо


Часовой пояс GMT +4, время: 18:36.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.