PDA

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


jora777
27.12.2010, 23:19
Здравствуйте, вот есть код:

var soundId:Number;

var sounds:Array = new Array();
sounds.push("http://1.ru/1.mp3");
sounds.push("http://2.ru/2.mp3");
sounds.push("http://3.ru/3.mp3");

function loadSound(id:Number):Void
{
soundId = id;
mySound.loadSound(sounds[soundId], true);
}

var buttons = [];
var m = this;
for(var j=0; j<10; j++) {
this["play_btn"+j].onRelease = function() { loadSound(j); }
}

Суть: в массив подгружаются ссылки на песни, при выборе песни - ссылка сохраняется в переменной.
Есть 10 кнопок, нужно чтобы при нажатии на кнопку загружалась песня соответственно.

Проблема: не пойму, почему при loadSound(0) (загрузка первой ссылки из массива)все работает хорошо, а при loadSound(j) нет результата.

etc
27.12.2010, 23:27
А по-вашему чему равна j на момент клика?

jora777
27.12.2010, 23:39
А по-вашему чему равна j на момент клика?

Нулю? Не понял вопроса.

etc
27.12.2010, 23:44
Почему нулю? Цикл выполнился, сколько теперь j?

mooncar
28.12.2010, 00:06
Автор, в конце замените на:
for(var j=0; j<10; j++)
{
this["play_btn"+j].id = j;
this["play_btn"+j].onRelease = loadSnd;
}

function loadSnd()
{
var id:Number = this.id;
loadSound(id);
}

jora777
31.12.2010, 16:06
mooncar, Ваш метод не действует.

rainbowrussia
31.12.2010, 23:28
Попробуйте так, хотя вроде ошибок явных нет.

for(var j=0; j<10; j++)
{
this["play_btn"+j].sndid = j;
this["play_btn"+j].onRelease = loadSnd;
}

function loadSnd()
{
loadSound(this.sndid);
}

mooncar
01.01.2011, 03:19
Принципиально - это не мой метод, а обычная практика.
Обработчик события назначается для нескольких кнопок циклом, как ссылка на одну и ту же функцию, где этот номер и используется.
В том же цикле каждой кнопке задается переменная-свойство, со значением, равным ее номеру, чтобы потом ее использовать.
Думается, вы что-то сделали неверно.
Пример использования во вложении. Запускать в IDE, там трейсы.

dark256
01.01.2011, 05:20
лунная машина == железный человек :)

mooncar
01.01.2011, 05:29
Спасибо, дарк :)
С НГ!

dark256
01.01.2011, 05:34
Взаимно! Воистину! :)