2009-05-28 2 views
0

Я работаю над mp3-плеером, и я супер новый во всех вещах, поэтому есть много вопросов. В настоящее время я застреваю в изменении трека. Моя переменная взгляд заявление, как это:Некоторая помощь с базовыми функциями звука в actionscript 3

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++; 
} 

ли кто-нибудь видит никаких очевидных ошибок ??? Благодаря

ответ

-2

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

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

sc = music.play(); 

Это не должно быть:

var musicPlay = music.play(); 
sc = musicPlay; 
+0

извините, это не имеет смысла ... ситуация в этой теме очень различна ... – Cay

+0

те же. в обоих случаях sc присваивается результат music.play(), который является ссылкой SoundChannel. – typeoneerror

0

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

0

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

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

sound.load(request); 

sc = sound.play(); 

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

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

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

Смежные вопросы