PDA

Просмотр полной версии : зацикленная функция


coreras
22.04.2010, 18:38
кто про что, а я всё про баню :о)

имеем:
1. массив, куда поместили ссылки на музыкальные треки.
2. функцию, которая вызывает метод лоадсаунд

function playSong(mp3) {
sound = new Sound(); // создаём новый обьект класса Sound
sound.loadSound(url[mp3], true);

собственно надо:

при нажимании на кнопку

var n=0;
play_button.onRelease = function():Void {
playSong(n);

sound.onSoundComplete = function():Void {

n++;
playSong(n);
}}
сего скрипта хватает, чтобы подгрузить и сыграть два трека из плей листа. Как зациклить функцию playSong(n), чтобы проиграли все треки, сколь бы их не было

AzagThoth
22.04.2010, 21:35
function playSong(mp3) {
sound = new Sound(); // создаём новый обьект класса Sound
sound.loadSound(url[mp3], true);
Ужасно не технично. Так лучше не делать. Что касается n то оно расти должно поидее. Потрейсите. В общем это какой-то ужас на самом деле :) Не понятно почему sound.onSoundComplete Вы в коде кнопки описываете.

coreras
23.04.2010, 04:59
что касается n, оно итак растет, именно по этому играется вторая песня. Но, чтобы сыграть третью, надо еще раз повторить код

sound.onSoundComplete = function():Void {

n++;
playSong(n);

еще раз. для четвертой - еще, и т.д.

"Не понятно почему sound.onSoundComplete" - мне тоже непонятно. Но, дело в том, что не в коде кнопки этот (не знаю как называется, класс, тег, команда:о) это.... скажем......... событие... onSoundComplete не работает. Пёс его знает почему :о)

Добавлено через 38 секунд
насчет "потрейсие" хотелось бы подробнее :о)

Добавлено через 7 минут
помнится, в бейске такое было. Когда тра-та-та сделается, гоуту туда. Вот бы в АС тоже самое, тока я не в курсе как это будет выглядеть :о)

Добавлено через 25 минут
пробовал gotoAndPlay function, не сработало

AzagThoth
23.04.2010, 06:27
Вот так правильно делать.
var n:Number=0;
createEmptyMovieClip("clip",getNextHighestDepth());
var snd:Sound=new Sound(clip);
playSong(n);
function playSong(n:Number):Void{
snd.loadSound(arr[n],false);
}
snd.onLoad=function(flagComplete:Boolean){
if(flagComplete==true){
snd.start();
}
}

snd.onSoundComplete=function():Void{
n++;
playSong(n);
}


Добавлено через 1 минуту
Только n не забудьте сравнивать с длинной массива, что бы не получить undefined однажды.