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

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

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

Регистрация: Apr 2010
Сообщений: 8
По умолчанию Различное время начала звука

Здравствуйте!
Делаю флеш-проект часов, с ними должна быть фоновая музыка. Задача - сделать так, чтобы эта музыка запускалась в разное время - допустим, если swf запущен в 18:00:00 то музыка стартует в 00 секунд, в 18:00:21 в 21 секунд и так далее. Пытаюсь сделать, но ничего не получается... Из догадок - поставить sec (переменную текущего времени) как offset, но это не работает. Музыка вызывается так:
Код:
onClipEvent (load) {
	var mus:Sound = new Sound();
mus.loadSound("ortclock.wav", true);
mus.start(sec, 0);
}
где clip - это видео сзади циферблата.
Что я не так делаю? Большая просьба помочь, заранее спасибо

Старый 21.04.2010, 21:43
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 2  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
А музыка вообще загружается? Вроде .wav нельзя.

Старый 21.04.2010, 21:50
dimon1408 вне форума Посмотреть профиль Отправить личное сообщение для dimon1408 Найти все сообщения от dimon1408
  № 3  
Ответить с цитированием
dimon1408

Регистрация: Apr 2010
Сообщений: 8
Да, как оказалось .wav нельзя (хоть на оффсайте Adobe было написано, что на винде можно). После конвертации в mp3 звук играется, но всегда с самого начала, а не как надо, так что проблема все равно не решена, но спасибо за наводку.

Старый 21.04.2010, 22:13
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 4  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Не привыкайте писать код в клипах так можно запутаться. Если хотите привязать звук к клипу используйте
Код AS1/AS2:
var mus:Sound = new Sound(клип);
А то вдруг ваш клип загружается до того как объявлена переменная sec, и конечно ему ничего не передаётся. Надо по больше кода увидеть.

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

Регистрация: Apr 2010
Сообщений: 8
Попробовал, не вышло.
Вот ещё код:
Время получается следующей командой:
Код:
this.onEnterFrame = function() {
	var time:Date = new Date(); //обновляется постоянно из-за onEnterFrame
	//Сохранение текущего времени
	var sec = time.getSeconds();
	var min = time.getMinutes();
	var hour = time.getHours();
	//Вращение стрелок
	seconds._rotation = sec * 6; // смещение стрелок раз в секунду
	minutes._rotation = (min + sec / 60) * 6; // минуты
	hours._rotation = (hour + min / 60) * 30; // 30 - т.к. 12 делений у часов
	// Вывод времени (электронные часы)
	timeTxt.text = hour + " : " + min + " : " + sec;
};
Затем делается тиканье, ставится на мувик movieSeconds:
Код:
onClipEvent (load) {
	var snd:Sound = new Sound();
snd.loadSound("tik.mp3", true);
var tik:Function = function ()
{
snd.start(0, 0);
};
var inter:Number = setInterval(tik, 1000);
}
Все остальное делалось руками. Если хотите, могу выложить исходник.

Старый 21.04.2010, 23:55
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 6  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Когда в функции создаётся переменная со словом "var", она называется локальной, и действует только на протяжении этой функции, а затем удаляется. И по этому к ней нет доступа из других функций. Можно сделать так:
Код AS1/AS2:
_root.onEnterFrame = function() {
	var time:Date = new Date();
	hour = time.getHours();
	min = time.getMinutes();
	sec = time.getSeconds();
            //.......................................
};
И если вы всё таки хотите писать код в клипе (чего не надо делать) а из него надо обратиться к переменной которая объявлена в _root, не забывайте дописать "_root" впереди, например:
Код AS1/AS2:
onClipEvent (load) {
	var snd:Sound = new Sound();
snd.loadSound("tik.mp3", true);
var tik:Function = function ()
{
snd.start(0, _root.sec);// <------
};
var inter:Number = setInterval(tik, 1000);
}

Старый 22.04.2010, 00:21
dimon1408 вне форума Посмотреть профиль Отправить личное сообщение для dimon1408 Найти все сообщения от dimon1408
  № 7  
Ответить с цитированием
dimon1408

Регистрация: Apr 2010
Сообщений: 8
Таки нет... Поставил всё вместе просто на слой ролика
Код:
_root.onEnterFrame = function() {
	var time:Date = new Date();
	hour = time.getHours();
	min = time.getMinutes();
	sec = time.getSeconds();
	seconds._rotation = sec * 6; // смещение стрелок раз в секунду
	minutes._rotation = (min + sec / 60) * 6; // минуты
	hours._rotation = (hour + min / 60) * 30; // 30 - т.к. 12 делений у часов
var snd:Sound = new Sound();
snd.loadSound("ortclock.mp3", true);
var tik:Function = function ()
{
snd.start(_root.sec, 0);// <------
};
var inter:Number = setInterval(tik, 60000);
}
Так вся музыка играется по многу раз за секунду. А если поставить
Код:
var inter:Number = setInterval(tik, 1);
То музыка очень медленно идет и флеш просто зависает...
Спасибо большое за помощь но, видимо, руки у меня кривые

Старый 22.04.2010, 00:52
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 8  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Смотри, у тебя это всё в событии onEnterFrame. Каждый кадр ты создаешь новый звук и нувую функцию, по этому ошибка. Загрузить звук и объявить функцию нужно один раз, а не постоянно, попробуй:
Код AS1/AS2:
_root.onEnterFrame = function() {
	var time:Date = new Date();
	hour = time.getHours();
	min = time.getMinutes();
	sec = time.getSeconds();
	seconds._rotation = sec * 6;// смещение стрелок раз в секунду
	minutes._rotation = (min + sec / 60) * 6;// минуты
	hours._rotation = (hour + min / 60) * 30;// 30 - т.к. 12 делений у часов
};
var snd:Sound = new Sound();
snd.loadSound("ortclock.mp3",true);
function tik() {
	snd.start(sec);
}
 
var inter:Number = setInterval(tik, 1000);

Старый 22.04.2010, 01:06
dimon1408 вне форума Посмотреть профиль Отправить личное сообщение для dimon1408 Найти все сообщения от dimon1408
  № 9  
Ответить с цитированием
dimon1408

Регистрация: Apr 2010
Сообщений: 8
Таки нет... Попробовал, всё равно начинается с первой секунды в любом случае. Попробовал поизменять параметры вокруг - всё равно ноль эффекта
Если хотите, можете убедиться - тут можно скачать архив с fla-файлом и самим ortclock.mp3.

Старый 22.04.2010, 01:50
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 10  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Вот так работает, но с одним но, длина твоего звука 40 секунд, а не 60. И если запустить ролик после 40 то ничего не будет.Попробуй:
Код AS1/AS2:
sec = new Date().getSeconds();
_root.onEnterFrame = function() {
	var time:Date = new Date();
	hour = time.getHours();
	min = time.getMinutes();
	sec = time.getSeconds();
	seconds._rotation = sec * 6;// смещение стрелок раз в секунду
	minutes._rotation = (min + sec / 60) * 6;// минуты
	hours._rotation = (hour + min / 60) * 30;// 30 - т.к. 12 делений у часов
 
};
 
var snd:Sound = new Sound();
snd.loadSound("ortclock.mp3",true);
snd.stop();
snd.onLoad = function(yes) {
	if (yes) {
		snd.start(sec);
	}
};

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

Теги
offset , время , звук

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

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


 


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


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