![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: May 2011
Сообщений: 39
|
Добрый день.
Есть файл с кодом, управляющим часами на сцене. 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 = new Date(); private var offset:Number = _start.getTimezoneOffset()*60000; private var datePassed:Date = new Date(); 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.getHours()) + ":" + f(d.getMinutes()) + ":" + f(d.getSeconds()); } private function updateClock():void { var dateNow:Date = new Date(); var timePassed:Number = dateNow.getTime() - _start.getTime() + offset; datePassed.setTime(timePassed); this["timeRunning"].text = formatDate(datePassed); Как это правильно сделать в данном коде?? |
|
|||||
|
Можно просто вычитать время старта таймера.
00:00=Московское время например 21:00 - время когда запустили таймер (21:00) 00:01 00:02 ...
__________________
------------------------------- FLASH FLASH FLASH FLASH FLASH |
|
|||||
|
используйте getTimer
при старте запомните время старта таймера и потом при каждом апдейте вычислайте разницу между сейчас и старом таймера
__________________
Хороший отдых - половина работы. |
|
|||||
|
Регистрация: May 2011
Сообщений: 39
|
Что нужно приравнивать к timeRunning, если я использую getTimer();??
|
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
__________________
Reality.getBounds(this); |
|
|||||
|
Регистрация: May 2011
Сообщений: 39
|
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 = new Date(); private var offset:Number = _start.getTimezoneOffset()*60000; private var datePassed:Date = new Date(); private var startTime:Date = new Date(); 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.getHours()) + ":" + f(d.getMinutes()) + ":" + f(d.getSeconds()); } private function updateClock():void { var datePassed = new Date(); datePassed.setTime(getTimer() - startTime); this["timeRunning"].text = formatDate(datePassed); } public function Clock() { _timer.addEventListener(TimerEvent.TIMER, onTimer); _timer.start(); updateClock(); }}} |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Не много ли datePassed?))
А что такое _start и startTime, обе — даты, инициализируемые одновременно, но не в конструкторе а "когда-то заранее"? И почему одни приватные переменные именованы с подчеркиванием, как положено, а некоторые — нет? Почему вообще у класса таймера название "часы", и нет методов для запуска и остановки? Почему таймер extends MovieClip? Он содержит анимацию на таймлайне? Что делает offset? Сплошные вопросы...
__________________
Reality.getBounds(this); |
|
|||||
|
Регистрация: May 2011
Сообщений: 39
|
offset:Number = _start.getTimezoneOffset()*60000;
Разница в минутах между местным временем компьютера и временем по всемирному скоординированному времени (UTC). startTime - предложенная вами переменная, из кода выше) таймер - не содержит анимации на сцене. На сцене мувик Clock, в нем текстовые поля динамические timeRunning и timeNow. Мне достался уже в таком виде файл, я могу лишь менять его, к сожалению. Сплошные вопросы... - У меня тоже(( |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Я имею в виду, что класс непонятен. И вопрос непонятен: "таймер не зависящий от времени компьютера". Таймер в принципе не может зависеть от времени компьютера.
Время показывают часы. Таймер отсчитывает прошедшее время от независимой (переменной) точки во времени. Если это — таймер, то от какого момента он отсчитывает время, что такое 00:00:00? Момент создания экземпляра? А если он будет помещен на сцену спустя 15 минут? Не проще ли было сделать в нем метод для запуска во избежание всяких разночтений?
__________________
Reality.getBounds(this); |
|
|||||
|
Регистрация: May 2011
Сообщений: 39
|
Там основная строка управления
var timePassed:Number = dateNow.getTime() - _start.getTime() + offset Зачем они прицепили offset, мне не ясно. Но из-за него на многих компьютерах сбивается таймер, и отсчитывает не 00-00, а допустим с 23-00. В таком состоянии таймер показывает с 04-00. 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 = new Date(); private var datePassed:Date = new Date(); 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.getHours()) + ":" + f(d.getMinutes()) + ":" + f(d.getSeconds()); } private function updateClock():void { var dateNow:Date = new Date(); var timePassed:Number = dateNow.getTime() - _start.getTime(); datePassed.setTime(timePassed); this["timeRunning"].text = formatDate(datePassed); } public function Clock() { _timer.addEventListener(TimerEvent.TIMER, onTimer); _timer.start(); updateClock(); } } } |
![]() |
![]() |
Часовой пояс GMT +4, время: 17:54. |
|
|
« Предыдущая тема | Следующая тема » |
|
|