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

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

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

Регистрация: Jun 2009
Сообщений: 16
По умолчанию Не прекращающийся звук

Сразу извинюсь если вопрос очень элементарный, но с флешем я на ВЫ...
Подскажите как сделать так, чтобы звук, проигравшись один раз не прекращался, а повторялся. Так скажем зациклить воспроизведение.
Есть следующий код:
Код AS1/AS2:
var snd:Sound = new Sound();
snd.load(new URLRequest("sound.mp3"));
var channel:SoundChannel = new SoundChannel();
snd.addEventListener(Event.COMPLETE, onLoadComplete, false, 0, true);
function onLoadComplete(evt:Event):void {
	var localSnd:Sound = evt.target as Sound;
	channel = localSnd.play();
}
 
soundBtnON.buttonMode = true;
soundBtnON.useHandCursor = true;
soundBtnOFF.buttonMode = true;
soundBtnOFF.useHandCursor = true;
soundBtnON.visible = false;
soundBtnOFF.addEventListener(MouseEvent.MOUSE_UP, soundBtnOFF_onClick);
function soundBtnOFF_onClick(evt:MouseEvent):void {
	soundBtnON.visible = true;
	channel.stop();
}
soundBtnON.addEventListener(MouseEvent.MOUSE_UP, soundBtnON_onClick);
function soundBtnON_onClick(evt:MouseEvent):void {
	soundBtnON.visible = false;
	channel = snd.play();
}
Методов типа loop() как я понял нет...
Заранее благодарен!

Старый 20.02.2010, 19:06
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 2  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Не привязываясь к вашему коду, приведу пример:
Код AS1/AS2:
my_sound.onSoundComplete = function() {
 my_sound.play();
};
Довольно просто.

Старый 20.02.2010, 19:22
greatilya вне форума Посмотреть профиль Отправить личное сообщение для greatilya Найти все сообщения от greatilya
  № 3  
Ответить с цитированием
greatilya

Регистрация: Jun 2009
Сообщений: 16
mooncar,
спасибо ОГРОМНОЕ!

Принцип понял. Пытаюсь заместо my_sound подставлять snd, channel, localSnd .... Пока безуспешно. Пытаюсь понять глубже к чему именно надо дописать onSoundComplete и где

Старый 20.02.2010, 19:36
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 4  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
К тому экземпляру Sound, который нужно зациклить.
Не напутайте там с областями видимости - у вас, например, localSnd, виден только внутри функции.

Старый 21.02.2010, 09:32
greatilya вне форума Посмотреть профиль Отправить личное сообщение для greatilya Найти все сообщения от greatilya
  № 5  
Ответить с цитированием
greatilya

Регистрация: Jun 2009
Сообщений: 16
Что-то никак не могу сообразить.
Вызвать onSoundComplete мне не дает, возникает следующая ошибка:
- Warning: 1090: Ошибка миграции: Flash Player не запускает обработчик событий onSoundComplete автоматически во время выполнения в ActionScript 3.0. Сначала нужно зарегистрировать этот обработчик для события, используя addEventListener ("soundComplete", callback_handler).

переписал код следующим образом:
Код AS3:
var snd:Sound = new Sound();
snd.load(new URLRequest("sound.mp3"));
var channel:SoundChannel = new SoundChannel();
snd.addEventListener(Event.COMPLETE, onLoadComplete, false, 0, true);
snd.addEventListener(Event.SOUND_COMPLETE, onSoundComplete, false, 0, true);
 
function onLoadComplete(evt:Event):void {
	//var localSnd:Sound = evt.target as Sound;
	channel = snd.play();
}
function onSoundComplete(evt:Event):void 
{ 
//channel.stop();
channel = snd.play(); 
}
Итого добавил:
Код AS3:
snd.addEventListener(Event.SOUND_COMPLETE, onSoundComplete, false, 0, true);
function onSoundComplete(evt:Event):void 
{ 
//channel.stop();
channel = snd.play(); 
}
Ошибок не стало но как я понимаю вызова onSoundComplete не происходит.


Последний раз редактировалось greatilya; 21.02.2010 в 09:44.
Старый 21.02.2010, 09:59
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 6  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Еще бы! Простите, а вы его как записали? Вы на мой пример посмотрите внимательно, как записано. Ничего в глаза не бросается?Тут раздел AS1/AS2, вы невнимательность проявили, а я сразу внимания не обратил.
И с точки зрения AS2 у вас сейчас функция пытается отработать события this, а не события звука. А this - это не звук.
Как сделать и возможно ли это в AS3 в хелпе посмотрите или в соответств. ветке вопрос задайте.


Последний раз редактировалось mooncar; 21.02.2010 в 10:04.
Старый 21.02.2010, 10:12
greatilya вне форума Посмотреть профиль Отправить личное сообщение для greatilya Найти все сообщения от greatilya
  № 7  
Ответить с цитированием
greatilya

Регистрация: Jun 2009
Сообщений: 16
Извиняюсь еще раз... я не знаю отличий в ActionScript и понятия не имею на какой версии пишу. Поэтому вероятно и написал не в тот раздел.
суть в том, что если я пишу опираясь на вашу подсказку что-то вроде этого:
Код AS1/AS2:
snd.onSoundComplete = function() {
 snd.play();
};
то мне выдается как я уже писал:
Цитата:
Warning: 1090: Ошибка миграции: Flash Player не запускает обработчик событий onSoundComplete автоматически во время выполнения в ActionScript 3.0. Сначала нужно зарегистрировать этот обработчик для события, используя addEventListener ("soundComplete", callback_handler)
Как видно из сообщения ошибки теперь могу догадаться что у меня написан скрипт на AS3... И мне задать вопрос в другой раздел?
PS: mooncar, выражаю признательность за то что оперативно отвечаете причем вежливо)

Старый 21.02.2010, 10:23
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 8  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Бывает. Изучите внимательно то, что вы делаете - главный вам совет, чтобы не попать впросак.
А прежде чем задавать вопрос на форуме, откройте встроенный хелп, да посмотрите, как отловить момент окончания звучания. И по этому событию стартуйте его снова.
Я AS3 не знаю, но вероятно, там также есть такое событие, посмотрите верный синтаксис.

Старый 21.02.2010, 11:05
greatilya вне форума Посмотреть профиль Отправить личное сообщение для greatilya Найти все сообщения от greatilya
  № 9  
Ответить с цитированием
greatilya

Регистрация: Jun 2009
Сообщений: 16
Цитата:
Изучите внимательно то, что вы делаете
Просто у меня очень много задач, и flash далеко не мое призвание и специальность. И задачи в нем я выполняю простые.
Цитата:
откройте встроенный хелп, да посмотрите, как отловить момент окончания звучания
вот я и писал на основании хелпа встроеного....

Еще раз спасибо!

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

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

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


 


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


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