Некоторая помощь с основными функциями звука в ActionScript 3 - PullRequest
0 голосов
/ 28 мая 2009

Я работаю над mp3-плеером, и я супер новичок во всем, поэтому есть много вопросов. В настоящее время я застреваю на смене трассы. Объявление моей переменной выглядит так:

var index:int = -1;  
var music:Sound = new Sound(new URLRequest("moe2008-05-24d02t02_vbr.mp3"));  
var sc:SoundChannel;  
var isPlaying:Boolean = false;

и моя функция отслеживания изменений выглядит следующим образом:

function changeTrack(newTrack){  
    sc.stop();
    isPlaying = false;
    music = new Sound(new URLRequest(newTrack));
    sc = music.play();
    isPlaying = true;
    index++; 
}

Кто-нибудь видит какие-либо очевидные ошибки ??? Спасибо

Ответы [ 3 ]

0 голосов
/ 26 октября 2009

Я думаю, вам следует попытаться закрыть звуковое соединение (Sound.close ()) перед созданием нового. Кроме того, я бы использовал тот же объект Sound для загрузки нового файла (Sound.load ()), чтобы избежать возможных проблем с GC (если вам не нужно переходить между звуками) ...

0 голосов
/ 27 мая 2010

Похоже, вам не хватает той части, где вы на самом деле загружаете внешний звук в новый звуковой объект. Ваш пример, кажется, использует один и тот же звуковой объект. Должно быть что-то вроде:

var sound:Sound = new Sound();
var request:URLRequest = new URLRequest("path/to/your/sound");

sound.load(request);

sc = sound.play();

Вам нужна локальная переменная звука для создания нового звука, так как другой экземпляр звука не может быть загружен в существующий:

После вызова load () для звука объект, вы не можете позже загрузить другой звуковой файл в этот звук объект. Чтобы загрузить другой звук файл, создайте новый объект Sound.

Возможно, вы захотите использовать словарь, чтобы отслеживать, какие звуки уже загружены. Поэтому, когда вызывается этот метод, вы проверяете, зарегистрирован ли звуковой объект в словаре, и если это так, воспроизводите его вместо загрузки файла.

0 голосов
/ 01 июля 2009

Как сказал Флэш Гордон: «Вы на самом деле переопределение локальных переменных, когда вы сбросить его свойство. "http://www.actionscript.org/forums/archive/index.php3/t-181659.html

Эта строка выглядит немного подозрительно.

sc = music.play();

Разве это не должно быть:

var musicPlay = music.play();
sc = musicPlay;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...