![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
|
|||||
|
Регистрация: Jul 2011
Сообщений: 18
|
У меня есть 3 кнопки: Button1, Button2, Button3.
Нужно обрабатывать нажатие на каждую кнопку, но прикреплять к каждой кнопке сценарий неудобно. Хочу сделать один обработчик, который будет по-разному реагировать на кнопки. К первому кадру ролика я прикрепляю сценарий: Buttons=Array (Button1,Button2,Button3); for (I=0;I<3;I++) Buttons [ I ].onPress= function () {trace (I);} при нажатии на кнопку Button1 выведется 0, при нажатии на кнопку Button2 выведется 1, при нажатии на кнопку Button3 выведется 2. На самом деле: при нажатии на любую кнопку выводится 3. Почему так происходит? Потому что создание обработчика - это как бы отложенный вызов функции. Поэтому переменная I успевает стать равной 3, раньше чем запустится обработчик. Именно это значение и выводится. Можно изменить сценарий: Buttons=Array (Button1,Button2,Button3); for (I=0;I<3;I++) Buttons [ I ].onPress= function () {trace (I);} I=12345; Короче говоря, в обработчик попадает не значение переменной I, а сама переменная. Оператор trace (I) выводит последнее присвоенное переменной I значение. Вопрос - как у Чернышевского - что делать? Как заставить обработчик иметь дело со старыми значениями переменных?
__________________
Kiss my AS! Последний раз редактировалось brodotsky; 09.08.2011 в 19:06. |
![]() |
Часовой пояс GMT +4, время: 23:02. |
|
|
« Предыдущая тема | Следующая тема » |
|
|