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

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

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

Регистрация: Aug 2010
Сообщений: 3
Question Не грузит поток после нажатия на стоп

Совсем недавно стал баловаться с AS3. Решил сделать для своего сайта плеер потока, собственного. Сделал.
Лицезреть его можно тут: http://tunebow.com (на главной страничке)
Но, сделав, заметил проблему. Если запустить его первый раз после загрузки странички, всё работает, но если вы его остановите, второй раз не запускается, хоть ты тресни, хотя в компиляторе работает, зависает только с 5го раза стоп/пуск. А на сайте, творит чудеса.
Кнопка плей - событие завязанное на клике, воспроизводит звук и начинает рисовать графику.
Кнопка стоп - полная остановка всех звуков.

Подскажите, почему так..как исправить, уже голову себе сломал...
Буду очень благодарен.

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

Регистрация: Dec 2007
Адрес: Россия, Москва
Сообщений: 541
Отправить сообщение для TWETTI с помощью Skype™
Я тут недавно делал потоковый плеер и столкнулся с той же самой проблемой. Для остановки звука надо остановить воспроизведение канала, закрыть загрузку потока и удалить звук. А потом чтобы воспроизвести его снова, ты создаешь его заново. Вот как я решил эту проблему:

Код AS3:
// При нажатии на кнопку PlayStopBtn вызывается эта функция
private function onClickPlayBtn(e:MouseEvent):void 
{			
	if (isPlaying)
	{
		channel.stop();
		sound.close();
		sound = null;
	}
	else
	{
		sound = new Sound(new URLRequest(RADIO_URL));
		channel = sound.play(0);
	}
 
	isPlaying = !isPlaying;
}
Если не получится так сделать то выкладывай свой код.

Кстати а ты знаешь что потоковый плеер загружает песню в оперативную память? То есть если плеер не закрыть или не остановить, то будет утечка памяти.

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

Регистрация: Aug 2010
Сообщений: 3
Вот мой код, не получается всё равно. Теперь ещё и рисовать не хочет прямо на сайте. Но в тесте, когда запускаешь HTML страничку только с ним - работает рисовалка (в компиляторе тоже рисует).
Код AS3:
import flash.media.Sound;
 
Pause_btn.addEventListener(MouseEvent.CLICK, music_ClickToPlayStopSound);
Play_Stop_btn.addEventListener(MouseEvent.CLICK, music_ClickToPlayStopSound);
 
var music:SoundChannel;
 
var test:Boolean = true;
 
function music_ClickToPlayStopSound(evt:MouseEvent):void
{
	if (test)
	{
		var s:Sound = new Sound(new URLRequest("http://www.tunebow.com:9000/tunebow"));
		music = s.play();
		var ba:ByteArray = new ByteArray();  
 
		var gr:Sprite = new Sprite();  
		gr.x = 166;  
		gr.y = 59;  
		addChild(gr);  
 
		var time:Timer = new Timer(50);  
		time.addEventListener(TimerEvent.TIMER, timerHandler);  
		time.start();  
 
		function completeHandler(event:Event):void {  	
  		event.target.play();  
		}  
 
		function soundCompleteHandler(event:Event):void {  	
  		time.stop();  
		} 
 
		function timerHandler(event:TimerEvent):void {  	
  		SoundMixer.computeSpectrum(ba, false);  	
  		var i:int;  	
  		gr.graphics.clear();  	
  		gr.graphics.lineStyle(0, 0x69C6E8);  	
  		gr.graphics.beginFill(0xE6E7E8);	  	
  		gr.graphics.moveTo(0, 0);  	
  		var w:int = 5;  	
  		for (i=0; i<370; i+=w) {  		
    		var t:Number = ba.readFloat();  		
    		var n:Number = (t * 50);  		
    		gr.graphics.drawCircle(i, w, -n);  	
  		}  
		}
		Play_Stop_btn.visible = false;
	}
	else
	{
		music.stop();		
		Play_Stop_btn.visible = true;
		//s.close();
		//s = null;
	}
	test = !test;
}
Вот так всё пашет в компиляторе, запускается и на второй раз, и на третий, на сайте - не хочет на второй раз, если раскрыть две закомментенные строчки внизу - компилятор начинает ругаться вот так:
Цитата:
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at TUNEBOW_site_2_fla::MainTimeline/music_ClickToPlayStopSound()
Добавлено через 5 часов 23 минуты
Ладно, рисование графики решил проблему, а вот с незапуском повторным на сайте не могу никак. Что-то не то и не понятно что...

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

Регистрация: Dec 2007
Адрес: Россия, Москва
Сообщений: 541
Отправить сообщение для TWETTI с помощью Skype™
У тебя код написан неправильно.
Вот так должно работать:

Код AS3:
import flash.media.Sound;
 
Pause_btn.addEventListener(MouseEvent.CLICK, music_ClickToPlayStopSound);
 
Play_Stop_btn.addEventListener(MouseEvent.CLICK, music_ClickToPlayStopSound);
 
var music:SoundChannel; 
var test:Boolean = true;
var s:Sound;
 
function music_ClickToPlayStopSound(evt:MouseEvent):void
{
	if (test)
	{
		s = new Sound(new URLRequest("http://www.tunebow.com:9000/tunebow"));
		music = s.play(); 
		Play_Stop_btn.visible = false;
	}
	else
	{
		music.stop();
		s.close();
		s = null;
		Play_Stop_btn.visible = true;
	}
 
	test = !test;
}

Старый 20.08.2010, 21:59
tunebow вне форума Посмотреть профиль Отправить личное сообщение для tunebow Найти все сообщения от tunebow
  № 5  
Ответить с цитированием
tunebow

Регистрация: Aug 2010
Сообщений: 3
Ага, углядел свою ошибку. Описывал переменные не в том месте, вот он и выкидывал null. Спасибо большое за помощь!!!!!

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

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

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


 


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


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