PDA

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


solo19770701
22.02.2009, 22:42
Вопрос. Есть кнопка

b1.onPress = function()
{
gotoAndStop("pg1");
};
все очень просто. Но вот пробелмма, со временем кнопок стало очень много (25). Писать код для каждой кнопки как то долго - глупо. И вот здесь к чему я пришел

for(var i:Number = 1; i<26; i++)
{
this['b'+i].onPress = function()
{
gotoAndStop('pg' + i);
trace(" Кнопка была нажата");
}
}
. Нажатие на кнопку проходит, но переход на метку кадра нет. Что не правильно делаю?:rolleyes:
Спасибо.

DarkLight
22.02.2009, 23:01
Тема обсуждается стотысячный раз:) i за пределами цикла отсутствует, и реализуется это так:

for(var i:Number = 1; i<26; i++)
{
this['b'+i].num = i;
this['b'+i].onPress = function()
{
gotoAndStop('pg' + this.num);
trace(" Кнопка была нажата");
}
}
Конкретно в Вашем случае можно даже не вводить дополнительное свойство, а получать номер с помощью substr из имени кнопки

solo19770701
22.02.2009, 23:15
to DarkLight: спасибо :drinks:
Я подозревал что цикл остается локальным.Но не мог додуматсья как его вывести за пределы функции. А то что вопрос обсуждался моног раз, ты прав, но я пропуситл/ненашел это обсуждение.

Вопрос, для общего просвящения, как this['b'+i].num = i, может быть видима внутри onPress функции, и что значит .num (я не смого найти описание этого операторав в хелпе).

Еще раз спасибо за помощь.

MANN
23.02.2009, 00:00
может тут что то полезное найдеш
http://www.flasher.ru/forum/showthread.php?t=119700

Wolsh
23.02.2009, 00:27
.num здесь - не оператор, а просто динамически созданное свойство, названное "от балды" (мувиклипы позволяют создавать в них свойства динамически, во время выполнения кода)
Поскольку внутри обработчика onPress this ссылается на кнопку, вызвавшую событие Press, this.num и будет этим сохраненным в кнопке свойством num.