![]() |
|
||||||||||
|
|||||
|
Регистрация: 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);
}
Что я не так делаю? Большая просьба помочь, заранее спасибо ![]() |
|
|||||
|
Регистрация: Apr 2010
Сообщений: 8
|
Да, как оказалось .wav нельзя (хоть на оффсайте Adobe было написано, что на винде можно). После конвертации в mp3 звук играется, но всегда с самого начала, а не как надо, так что проблема все равно не решена, но спасибо за наводку.
|
|
|||||
|
Не привыкайте писать код в клипах так можно запутаться. Если хотите привязать звук к клипу используйте
А то вдруг ваш клип загружается до того как объявлена переменная sec, и конечно ему ничего не передаётся. Надо по больше кода увидеть. |
|
|||||
|
Регистрация: 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;
};
Все остальное делалось руками. Если хотите, могу выложить исходник. |
|
|||||
|
Когда в функции создаётся переменная со словом "var", она называется локальной, и действует только на протяжении этой функции, а затем удаляется. И по этому к ней нет доступа из других функций. Можно сделать так:
_root.onEnterFrame = function() { var time:Date = new Date(); hour = time.getHours(); min = time.getMinutes(); sec = time.getSeconds(); //....................................... }; |
|
|||||
|
Регистрация: 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);
}
То музыка очень медленно идет и флеш просто зависает... Спасибо большое за помощь но, видимо, руки у меня кривые ![]() |
|
|||||
|
Смотри, у тебя это всё в событии onEnterFrame. Каждый кадр ты создаешь новый звук и нувую функцию, по этому ошибка. Загрузить звук и объявить функцию нужно один раз, а не постоянно, попробуй:
_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); |
|
|||||
|
Вот так работает, но с одним но, длина твоего звука 40 секунд, а не 60. И если запустить ролик после 40 то ничего не будет.Попробуй:
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 , время , звук |
|
|