Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 24.07.2006, 01:59
DJ_Baton вне форума Посмотреть профиль Отправить личное сообщение для DJ_Baton Найти все сообщения от DJ_Baton
  № 1  
Ответить с цитированием
DJ_Baton

Регистрация: Aug 2003
Сообщений: 204
По умолчанию Работа со временем

как привязывать функции ко временным рамкам, допустим начальный скрипт идёт так :

Код:
time = new Date();
sec_time = time.getSeconds();
time_m = time.getMinutes();
time_th = time.getHours();
как теперь сделать обработку действия например на каждую новую секунду я хочу сделать звук, чтоб он играл 1 раз, т.е. это я часы делаю, вот и весь прикол в том чтоб каждую секунду чётко играл определённый звук, далее каждую минуту (т.е. на 60-й секунде относительно часов) играл другой звук, а каждый час соответственно третий, и чтоб небыло наложения...


Последний раз редактировалось iNils; 24.07.2006 в 12:55.
Старый 24.07.2006, 09:37
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 2  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
запустить интервал с проверкой текущего времени, например
Код:
time = new Date();
time_s = time.getSeconds();
time_m = time.getMinutes();
time_h = time.getHours();
function playSound(){
	var currentTime=new Date();
	var curr_h=currentTime.getHours(),curr_m=currentTime.getMinutes(),curr_s=currentTime.getSeconds();
	if (curr_h!=time_h){
		trace("H");//играем 'часовой' звук
		time_h=curr_h;
		time_m=curr_m;
		time_s=curr_s;
		return;
	}
	if(curr_m!=time_m){
		trace("M");//играем 'минутовый' звук
		time_m=curr_m;
		time_s=curr_s;
		return;
	}
	if(curr_s!=time_s){
		trace("S:"+curr_s);
		time_s=curr_s;
	}
}
setInterval(playSound,50);

Старый 24.07.2006, 09:58
DJ_Baton вне форума Посмотреть профиль Отправить личное сообщение для DJ_Baton Найти все сообщения от DJ_Baton
  № 3  
Ответить с цитированием
DJ_Baton

Регистрация: Aug 2003
Сообщений: 204
Ну и как это должно работать ?
реально пробовал, не то, смотри смысл такой есть мувики в руте, называются:
ssound
msound
hsound
функции по срабатыванию звуков:
Код:
_root.ssound.play();
_root.msound.play();
_root.hsound.play();
смысл в том чтоб в секундах начиная от 1 до 59 сработал
Код:
_root.ssound.play();
на 0-й секунде сработал только
Код:
_root.msound.play();
но на 0-й секунде и нулевой минуте срабатывал только
Код:
_root.hsound.play();
т.е. тут должна быть какая-то обработка на сравнение данных - часы, минуты и секунды и что бы оно при постоянной проверке сработало только 1 раз, а не постоянно срабатывало в течении данного часа, минуты, секунды...

Логически это выглядеть должно где-то так
if (секунды не равны нулю)
если равны обработать:
if (если секунды равны нулю и минуты не равны нулю)
если не прокатило тогда обработать
if (если секунды равны нулю и минуты равны нулю)
по идее что-то в этом роде...
но проверка данных должна осуществлятся раз в секунду

--------------------------

т.е. допустим я создал в руте мувик и прописал в нём первую часть скрипта:

Код:
var sec_sound:Sound = new Sound();
sec_sound.attachSound("sec_sound");
if (_root.sec_time != 0) {
	sec_sound.start();
}
он аттачит мой звук и соответственно 1 раз его проигрывает, НО! выходит следущее:
он играет его всего 1 раз, если же событию прописать onEnterFrame функцию, он его начинает играть постоянно (циклить), остаётся решить проблему чтоб обработка события производилась только при каждой новой секунде, как это реализовать ?


Последний раз редактировалось iNils; 24.07.2006 в 12:56.
Старый 24.07.2006, 10:33
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 4  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
поставь вместо трэйсов свои функции..
точно секунду обеспечить нельзя и значит твои часы начнут отставать/опережать системные, поэтому проверяем чаще, а реагируем на смену часов/минут/секунд..
если этот нюанс пофиг, тогда все еще проще:
Код:
var s=0;
function playSound(){
	s++;
	if(!(s%3600)){
		trace("час");
		return;
	}
	if(!(s%60)){
		trace("минута")
		return;
	}
	trace("секунда");
	
}
setInterval(playSound,1000);

Старый 26.07.2006, 22:04
DJ_Baton вне форума Посмотреть профиль Отправить личное сообщение для DJ_Baton Найти все сообщения от DJ_Baton
  № 5  
Ответить с цитированием
DJ_Baton

Регистрация: Aug 2003
Сообщений: 204
Большое спасибо за совет, всё сработало, но был сбой на доли секунд, т.е. стрелка в начале переступала деление, потом происходил щелчек...
Вернулся к первому варианту, доработал, объединил с твоими идеями, вышла система такая:

3 мувика каждый со стрелками, 2 по 60 кадров (минуты и секунды) и 1 на 12 кадров, и они привязаны к динамикам в которых соответственно тикает электронное время, с ноликами пришлось поработать, 0 не принимало, сделал IF (X<1) и привязал все звуки и функции тупо к самим стрелкам, т.е. к кадрам в этих мувиках
Ещё раз большое спасибо, на моё тварение можешь посмотреть тут:
http://dj-studio.h10.ru/clock.html

Создать новую тему Ответ Часовой пояс GMT +4, время: 05:43.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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