Помощь · Поиск · Пользователи · Календарь
Полная версия этой страницы: Подскажите, как сделать Таймер
Flash Zone Forum > Macromedia Flash > Начинающим
Assa
Подскажите, пожалуйся, как во флеш сделать таймер. Так чтобы шел отсчет времени: секунды, минуты и часы.
MustLive
Assa

Чтобы сделать во флеше таймер нужно использовать объект Date.

Код
clock = new Date();
hour = clock.getHours();
minute = clock.getMinutes();
second = clock.getSeconds();


Про создание часов во флеше я писал во втором номере нашей рассылки в статье Создание часов с цифровым циферблатом во Flash.
Assa
Я вставил, этот код в клип, но к сожалению ничего не вышло sad.gif .Может сделал что не так
tiHo
Конечно же ничего не будет smile.gif а что ты ожидал(а) увидеть? ты только обозначил(а) переменные hour minute и second, и присвоил(а) им значения от класса Date.

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

создай динамическое текстовое поле, и назови его vivod

после чего напиши код(на 1-ый кадр) :

Код
_root.onEnterFrame = function ()
{
    var time:Date = new Date();
    var second:Number = time.getSeconds();
    var minute:Number = time.getMinutes();
    var hour:Number = time.getHours();
    vivod.text = hour + ":" + minute + "." + second;
};
MustLive
Цитата
Я вставил, этот код в клип, но к сожалению ничего не вышло sad.gif Может сделал что не так

Assa

Чтобы всё заработало, в случае если что-то непонятно, нужно внимательно читать нашу рассылку, где во втором номере, как я уже сказал, я детально описал создание часов во флеше (для того я и сослался на второй номер). На форуме я также ранее уже эту тему рассматривал.
Assa
Пошел читать ссылку, может пойму, а то никак не доходит smile.gif
MustLive
Давай, Assa, почитай wink.gif

В рассылке я детально описал процесс создания часов с цифровым циферблатом во флеш.

Также я об этой теме писал на форуме: /forum/index.php?showto...dpost&p=836
Assa
Часы я делать умею,  ссылку читал. Единственное что я не понял это чем ваш код отличается от вот этого например:
mydate = new Date();
sec = mydate.getSeconds();
min = mydate.getMinutes();
hour = mydate.getHours();
if (sec<10) {
sec = "0"+sec;
}
if (min<10) {
min = "0"+min;
}
if (hour<10) {
hour = "0"+hour;
}
time = hour add " " add min add " " add sec;
И как делать отсчет времени (то что мне нужно) я так и не понял
MustLive
Цитата
Часы я делать умею, ссылку читал.

Это хорошо. Главное чтобы от информации польза была.

Цитата
Единственное что я не понял это чем ваш код отличается от вот этого например:

Особо ничем не отличается, формирования вывода значения текущего времени - это индивидуальное дело каждого разработчика (т.е. эти отличия не существенны). Лишь обращу внимание, как это было сделано на форуме и в рассылке, а также tiHo в этой теме, что нужно код вызова объекта Date занести в блок onEnterFrame. Чтобы время обновлялось с частой ролика (fps проигрывания флешки).

Цитата
И как делать отсчет времени (то что мне нужно) я так и не понял

Assa, под Таймером могут подразумеваться разные вещи - как "Часы", так и "Секундомер". И это различные понятия (у них различные задачи, и соотвественно их реализация).

О часах я уже высказался. С таймером (секундомером) разбирайся. Ничего сложного в этом нет.

Секундомер можно сделать на основе объекта Date: нужно будет в цикле onEnterFrame сравнивать текущее и предыдущее значение времени, и производить необходимые вычисления - секундомер "отнимает" (если обратный отсчёт) или "добавляет" (если с нуля считает) секунды. Можна сделать и по другому - с ипользованием setInterval (этот вариант предпочтителен - я сам именно им пользуюсь для создания секундомеров).
Assa
Научи меня, плиззззззз, так сказать в реалтайме, в icq например. smile.gif Нужно очень, А?
MustLive
Assa

Для обучения в асе нету времени smile.gif.

Цитата
Научи меня, плиззззззз

Ну а относительно создания секундоменров я вроде достаточно описал возможные подходы. Как с использованием Date, так и setInterval.

Ну и хелп всегда можно почитать.
Assa
Нельзя. Знания английского языка не позволяют. Кстати, есть полностью "русский" флеш?
Rohan
Код
var numOfSeconds:Number = 10;
var finalPoint:Number = (new Date()).getTime() + 1000*numOfSeconds;
_root.onEnterFrame = function(){
    var currentTime:Number = (new Date()).getTime();
    trace(Math.round((finalPoint-currentTime)/1000));
    if(finalPoint-currentTime<=0){
        trace("BOOM!");
        delete this.onEnterFrame;
    }
}
Assa
Я сделал текстовое поле - 00:00:00. Туда вставил код:
Цитата
Код
var numOfSeconds:Number = 10;
var finalPoint:Number = (new Date()).getTime() + 1000*numOfSeconds;
_root.onEnterFrame = function(){
var currentTime:Number = (new Date()).getTime();
trace(Math.round((finalPoint-currentTime)/1000));
if(finalPoint-currentTime<=0){
trace("BOOM!");
delete this.onEnterFrame;
}
}

Затем сделал второй кадр (как в электронных часах), но ничего не из этого не получилось. Может еще что нужно было написать?
MustLive
Assa

Код Rohan-а вставь в кадр (первый) и запусти. И всё заработает.

Это для флеш 7/8, если у тебя флеш 6/мх (как на том компе за которым я сейчас сижу), то код немного видоизменится для корректной работы:
Код
var numOfSeconds = 10;
var finalPoint = (new Date()).getTime() + 1000*numOfSeconds;
_root.onEnterFrame = function(){
    var currentTime = (new Date()).getTime();
    trace(Math.round((finalPoint-currentTime)/1000));
    if(finalPoint-currentTime<=0){
        trace("BOOM!");
        delete this.onEnterFrame;
    }
}


Цитата
Я сделал текстовое поле - 00:00:00. Туда вставил код:

Для отображения таймера не в трейсе, а в текстовой надписи сошлись на текстовую надписm в коде. Вместо trace(Math.round((finalPoint-currentTime)/1000)) - _root.textfield.text=Math.round((finalPoint-currentTime)/1000). И вместо trace("BOOM!") сделай нужное действие.

Данный таймер опрашивается с частотой (fps) флеш ролика.

Цитата
Кстати, есть полностью "русский" флеш?

Да есть перевод на русский. Как хелпа и акшон скрипт справочника, так и ливдоков.

Данная тема уже неоднократно обсуждалась. В том числе я давал ссылки на сайты откуда можно скачать документацию на русском. Поиск по форуму (и поиск в Гугле) всегда помогут.
Assa
Цитата
И вместо trace("BOOM!") сделай нужное действие.

А какое там действие "нужное". И еще, можно объяснить как это все работает. Я вот тут код с часами разбирал:
mydate = new Date();
sec = mydate.getSeconds();
min = mydate.getMinutes();
hour = mydate.getHours();
if (sec<10) {
sec = "0"+sec;
}
if (min<10) {
min = "0"+min;
}
if (hour<10) {
hour = "0"+hour;
}
time = hour add " " add min add " " add sec;
Так там можно убрать минуты, секунды и часы. Например сделать отсчет времени от 0 до 60 секунд. Также и минуты и часы. А нельзя как-то сделать так чтобы шел отсчет: секунды, часы, минуты, чтобы только было видно все три поля, а за основу взять этот кад
MustLive
Цитата
А какое там действие "нужное".

Assa, здесь уж ты сам должен решить, какое действие нужное.

В примере Рохана, появляется сообщение "BOOM!" (причём в трейсе, поэтому в плеере/плагине сообщения ты не увидешь, только в редакторе).

Ты можешь установить вызов отдельной функции, появление текстового сообщения или объекта, переход на нужный кадр и т.д.

Цитата
И еще, можно объяснить как это все работает.

Разбирайся, здесь ничего сложного.

Цитата
А нельзя как-то сделать так чтобы шел отсчет: секунды, часы, минуты, чтобы только было видно все три поля

Всё можно. Как я уже сказал в коде ты должен сослаться на текстовые поля, которые ты разместишь на сцене (секунды, минуты, часы). И соответственно пойдёт отсчёт, по заданному алгоритму (секунды Рохан уже реализовал, используй их и самостоятельно реализуй минуты и часы).

P.S.

Я смотрю Rohan большой поклонник Math.round. Об этом мы уже с ним говорили ранее wink.gif. Math.round - это для юзеров, профессионалы используют Math.floor.
Pixel
Здравствуйте, помогите сделать отсчёт времени для тест программы, вроде скрипт на языке крутиться, а додумать не могу...допустим дано время 01:30:00 час тридцать минут и идёт отсчёт начиная  с секунд...и так до истечения часа...помогите!!! выложите скрипт или хотябы направьте в нужное направление.
tiHo
Нажмите для просмотра прикрепленного файла
/forum/index.php?act=At...=post&id=48

это конечно самый запутанный код таймера, ибо моя логика неподвластна никаму(и даже мне) laugh.gif
Pixel
 я почему то не могу пройти по этой ссылке( ....может тут выложишь
tiHo
вот
nikitar
tiHo, сейчас посмотрел, у тебя все переменные названы по-русски и всё работает.
Надо же, я думал что русские переменные не определяются...
Это было открытие для меня smile.gif
MustLive
Цитата
Здравствуйте, помогите сделать отсчёт времени для тест программы

Pixel

Данную тему мы уже рассматривали, в том числе в текущем топике (см. выше). И приводили уже примеры кода.

Касательно тест программ я уже приводил ссылки на свою систему тестирования знаний на флеше:
  • Подсистема: Тест
  • Подсистема: Самоконтроль
Тест программы нужно или самому разрабатывать или покупать уже имеющиеся (в том числе на флеше, в том числе с исходниками, в том числе с кодом таймера).

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

Можешь также посмотреть исходник tiHo.

Цитата
я почему то не могу пройти по этой ссылке( ....может тут выложишь

Это ссылка на файл прикреплённый на форуме. В другой теме (т.к.  текущей запрещёно выкладывать пользователям). И она должна у тебя работать, если ты залогинен на форуме. Так что скачай (или с форума или с сайта tiHo) исходник и посмотри.
tiHo
Цитата(nikitar @ 11.12.2006 - 00:57) *
tiHo, сейчас посмотрел, у тебя все переменные названы по-русски и всё работает.
Надо же, я думал что русские переменные не определяются...
Это было открытие для меня smile.gif
Pixel
tiHo, спасибо удружил! то что надо smile.gif
tiHo
 наздоровье конешно, но у тебя с ним появится парочка проблем, которые ты уж реши сам smile.gif механизм недоработан
Morfey
Ребята,помогите пожалуйста.Создал я сайт,хочу вверху страници поместить флеш-отсчёт времени от того момента когда создался сайт...Во флеш я вообще нешарюsad.gif Может кто-то сделает? Размер 250х50 на прозрачном фоне.Дата от которой начинаеться отчёт - 25 января 2007г.,18:33...Буду очень признателен
nikitar
Пользуйся исходником, который выложил tiHo в этой же теме.
Он тебе полностью подойдёт.
/forum/index.php?s=&...post;&p=5370

Прозрачный фон во флэшке = поиск по форуму.

Мы тоже не можем ответ на один и тот же вопрос каждый день повторять.
MustLive
Morfey

Подобные вопросы на форуме обсуждалась, как по поводу часов и таймеров, так и по поводу прозрачности. Поиск по форуму может помочь.

Воспользуйся ссылкой приведённой nikitar (на пост tiHo со ссылкой на исходник).

P.S.

Как я уже говорил, вопрос по поводу прозрачности фона флешки (где нужно использовать параметр wmode) один из главных кандидатов в FAQ по флешу.
KirillWd
 люди, как здесь привязать файл? я только что сделал таймер с использованием getTimer(). вот хочу показать smile.gif
MustLive
Цитата
люди, как здесь привязать файл?

KirillWd

Прикрепи файл к своему посту. Это делается в расширенной форме, которая доступна при нажатии на кнопку "Ответить" в теме форума или на кнопку "Расширенная форма" в форме быстрого ответа.
Русская версия IP.Board © 2001-2017 IPS, Inc.