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

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

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

Регистрация: Apr 2009
Сообщений: 167
Записей в блоге: 1
По умолчанию проблема с addEventListener(Event.SOUND_COMPLETE, onComplete);

Код AS3:
var _sound = new Sound();
var _channel:SoundChannel; 
 
_sound.load(new URLRequest("song.mp3"), new SoundLoaderContext(290000));
_channel.addEventListener(Event.SOUND_COMPLETE, onComplete);
 
stop_.addEventListener(MouseEvent.CLICK, stop_f);
play_.addEventListener(MouseEvent.CLICK, play_f);
 
function play_f(e:Event){
	_channel = _sound.play();	
	trace("play");
}
 
function stop_f(e:Event){
	SoundMixer.stopAll();
}
 
 
all_play.addEventListener(MouseEvent.CLICK, all_play1);
 
function all_play1(e:Event){
	_channel = _sound.play(); 
	removeChild(all_play);
}
 
 
function onComplete(e:Event){
	trace("complete");
}
компилятор выдает:
Код:
TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".
	at _fla::MainTimeline/frame1()
если убрать из кода
Код AS3:
_channel.addEventListener(Event.SOUND_COMPLETE, onComplete);
то все работает нормально, но естественно, когда заканчиваеться композиция, то ф-ция "onComplete" не вызываеться, а это жизненно необходимо.
Собственно вопрос что делать-то?!

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

Регистрация: Feb 2004
Адрес: Россия, В. Новгород
Сообщений: 255
Отправить сообщение для DEAFFF с помощью ICQ
дождитесь загрузки звука, а после загрузки разрешайте жать на кнопки, причем замените на это:

Код AS3:
_channel = _sound.play();
_channel.addEventListener(Event.SOUND_COMPLETE, onComplete);
__________________
зная будущее, хотя бы, на 10 минут вперед, можно покорить весь мир...

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

Регистрация: Jan 2009
Сообщений: 1,651
Код AS3:
var _sound = new Sound();
var _channel:SoundChannel; 
 
_sound.load(new URLRequest("song.mp3"), new SoundLoaderContext(290000));
_channel=_sound.play();
_channel.addEventListener(Event.SOUND_COMPLETE, onComplete);
 
stop_.addEventListener(MouseEvent.CLICK, stop_f);
play_.addEventListener(MouseEvent.CLICK, play_f);
 
function play_f(e:Event){
	_channel = _sound.play();	
	trace("play");
}
 
function stop_f(e:Event){
	SoundMixer.stopAll();
}
 
 
all_play.addEventListener(MouseEvent.CLICK, all_play1);
 
function all_play1(e:Event){
	_channel = _sound.play(); 
	removeChild(all_play);
}
 
 
function onComplete(e:Event){
	trace("complete");
}
дожидаться загрузки звука по-моему не обязательно, можно канал сразу создавать
__________________
мой пустой блог

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

Регистрация: Apr 2009
Сообщений: 167
Записей в блоге: 1
iflamberg
ну песня-то 2 раза начинает проигрываться!

DEAFFF
Код AS3:
var _sound = new Sound();
var _channel:SoundChannel;  
_sound.load(new URLRequest("song.mp3"), new SoundLoaderContext(290000));
 
all_play.addEventListener(MouseEvent.CLICK, all_play1);
 
stop_.addEventListener(MouseEvent.CLICK, stop_f);
play_.addEventListener(MouseEvent.CLICK, play_f);
 
 
function all_play1(e:Event){
	_channel = _sound.play();
    _channel.addEventListener(Event.SOUND_COMPLETE, onComplete);
	removeChild(all_play);
}
 
function play_f(e:Event){
	_channel = _sound.play();	
	trace("play");
}
 
function stop_f(e:Event){
	SoundMixer.stopAll();
}
 
function onComplete(e:Event){
	trace("complete");
}
ну вроде сделал как вы написали, но когда песня заканчиваеться, то ф-ция "onComplete" не вызываеться! %)

Старый 12.12.2009, 02:05
bicubic_bublic вне форума Посмотреть профиль Найти все сообщения от bicubic_bublic
  № 5  
Ответить с цитированием
bicubic_bublic
Banned
[+4 25.09.09]
[+1 12.11.09]
[+4 12.12.09]

Регистрация: Sep 2009
Сообщений: 231
Цитата:
ну вроде сделал как вы написали, но когда песня заканчиваеться, то ф-ция "onComplete" не вызываеться! %)
И НЕ БУДЕТ

Старый 12.12.2009, 10:59
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 6  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
Вроде Event.COMPLETE должно подписываться у Sound`а, а не у SoundChannel`а для такого эффекта, как вы хотите...

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

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

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


 


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


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