Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Таймер обратного отсчета на Shared Object (http://www.flasher.ru/forum/showthread.php?t=209271)

Кот Баюн 26.10.2014 20:56

а когда он отсчитает 6 часов, то что выдаст в trace?

dark256 26.10.2014 23:23

О как..... Есть текущее время и БУДУЩЕЕ..... считаем разницу и показыаем отсчет...... Когда отсчитает, очевидно, что разница станет отрицательной :)
Соотв этот момент ндо отловить и .... ну тут вариантов масса :)
Вы оперируете не собственно ДАТОЙ, а разностными величинами. Которые надлежащим образом обрабатываете и отображаете......... Что он там выдаст - это вам решать и программить :)

Во вообще идеальный пример извращения.

Таймер на 35 сек. Вывод - в текстовый блок на стэйдже.

Код AS1/AS2:

var targetDate:Date = new Date().valueOf()+60*60*1000*0.01;
 
onEnterFrame = function()
{
        var DEC:Date = new Date( targetDate - new Date() )
        out.text =  DEC.getUTCHours()+":"+DEC.getMinutes()+":"+DEC.getSeconds()
        out.text += "\n"+DEC.valueOf()
}


silin 27.10.2014 10:13

Цитата:

Сообщение от Кот Баюн (Сообщение 1174078)
вопрос в том, что не знаю, как на практике прикрутить код от обычного таймера к SO.
опыта мало в этом.

Код AS1/AS2:

var tf:TextField;
var curTime:Number;
var so:SharedObject;
var totTime:Number=6;
 
 
tf = this.createTextField("tf", 0, 0, 0, 200, 80);
so = SharedObject.getLocal("countdown", "/");
if (so.data.elapsedTime) {
        // процесс уже запущен, стартуем счет
        startCount();
 
 
} else {
        //нет данных, создаем и ждем отмашки на старт (любой клик)
        so.data.elapsedTime = 0;
        tf.text = "кликните где-нибудь для старта";
        this.onMouseDown = startCount;
 
}
 
function startCount() {
        curTime = getTimer();
        this.onEnterFrame = this_onEnterFrame;
        this.onMouseDown = null;
}
 
function this_onEnterFrame() {
        // добавляем время счетчику
        var time:Number = getTimer();
        so.data.elapsedTime += time-curTime;
        curTime = time;
 
        // показываем сколько прошло\осталось
        var d:Date = new Date();
        d.setTime(so.data.elapsedTime);
        tf.text = "истрачено  "+d.getUTCHours()+":"+d.getUTCMinutes()+":"+d.getUTCSeconds();
        d.setTime(totTime*60*60*1e3-so.data.elapsedTime);
        tf.text += "\nосталось    "+d.getUTCHours()+":"+d.getUTCMinutes()+":"+d.getUTCSeconds();
}

Добавлено через 7 минут
упс
только это я почему-то написал для случая, когда счет при закрытии флешки останавливается, а при старте возобновляется снова
если надо, чтоб продолжался, то будет еще проще.., только до меня не доходит практический смысл такого счетчика, поэтому пусть так пока (если что переделать не сложно)

dark256 27.10.2014 10:29

Цитата:

Сообщение от silin (Сообщение 1174194)
d.getUTCHours()+":"+d.getUTCMinutes()+":"+d.getUTCSeconds();

Икскьюзми, магистр (с), а использование ЮТС минут-секунд действительно имеет какой-то практический смысл, или это просто решение задачи в общем виде?

silin 27.10.2014 10:49

дада, это на случай когда нашей думе некуда уже будет часовые пояса двигать и они примутся за минутные и секундные :)

dark256 27.10.2014 17:55

Понятно. Предусмотрительно :)


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

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