Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Проблемы со звуком, вероятно звуковыми каналами. (http://www.flasher.ru/forum/showthread.php?t=174498)

Samuraix 26.01.2012 21:46

Проблемы со звуком, вероятно звуковыми каналами.
 
Здравствуйте!
Пишу интернет-радио, все банально.
Запускается и останавливается проигрывание кодом:
Код AS3:

public function playSound():void
{
        if (_status == SoundStatus.SND_PLAYING)
                stopSound();
        var req:URLRequest = new URLRequest("http://webcast.emg.fm:55655/europaplus" + _bitrate + ".mp3");
        stream = new Sound(req);
        stream.addEventListener(IOErrorEvent.IO_ERROR, function(e:*) {trace("IOError"); } );
        sndChannel = stream.play();
        sndChannel.soundTransform = new SoundTransform(volumeControl.value);
 
        _status = SoundStatus.SND_PLAYING;
}
 
public function stopSound():void
{
        if (sndChannel)
                sndChannel.stop();
        sndChannel = null;
        if (stream)
                stream.close();
        stream = null;
        _status = SoundStatus.SND_STOPPED;
}

Проблема в том, что при первом вызове playSound() музыка начинает воспроизводиться. Затем вызывается stopSound() - звук прекращается. Затем вновь вызов playSound() - никакой реакции.
Не так давно писал игрушку, при запуске - падала с ошибкой по звуку (какой точно - не помню, прошу прощения), но происходило тогда, когда во вконтакте музыку слушал. Как только выключил там музыку и вновь запустил- все пошло удачно. Включил музыку - ошибка.
Не могу понять, что за конфликты различных флешек на звуковой почве. Может, кто-то сталкивался с этим?

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

Inet_PC 26.01.2012 22:16

Возможно ошибка где-то еще, а Ваш код у меня работает. Вот так делать не стоит:
Цитата:

stream.addEventListener(IOErrorEvent.IO_ERROR, function(e:*) {trace("IOError"); } );
И наверное не стоит каждый раз создавать Sound заново, можно запомнить позицию текущую, и в play ее передавать.

Samuraix 26.01.2012 22:24

Цитата:

Сообщение от Inet_PC (Сообщение 1059350)
Возможно ошибка где-то еще, а Ваш код у меня работает.
Вот так делать не стоит.

То есть запускается и после остановки?
И если нетрудно, то прошу объяснить, почему так делать не стоит..
Спасибо!

Inet_PC 26.01.2012 22:32

Воть читайте.

Samuraix 26.01.2012 22:37

Цитата:

Сообщение от Inet_PC (Сообщение 1059353)
Воть читайте.

А, понятно, анонимные функции:) Если честно, этот листенер вешаю просто чтобы флешка не падала с SecurityError #2000. Перепишу.
Спасибо еще раз.

Inet_PC 26.01.2012 23:03

Цитата:

Если честно, этот листенер вешаю просто чтобы флешка не падала с SecurityError #2000.
Так нужно ошибку обрабатывать, например показать пользователю сообщение, что не удалось загрузить что-то, или проверьте интернет-соединение. А то пользователь сидит в догадках чэт не работает ничего.
Цитата:

Перепишу.
Вот это правильно.


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

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