Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как создавать функции в цикле (http://www.flasher.ru/forum/showthread.php?t=118377)

Smrad 21.11.2008 17:47

Как создавать функции в цикле
 
Такой код:
Код AS3:

var ar : Array = new Array();
 
for (var i : int = 0; i < 10; i++)
{
    var handler : Function =
    function() : void
    {
        trace(i);
    }
 
    ar.push(handler);       
}
 
for (var j : int = 0; j < 10; j++)
{
    ar[j]();
}

10 раз напечатает число 11. Как сделать, чтобы подобный код печатал числа от 0 до 9?
Заранее спасибо за ответы.

iNils 21.11.2008 18:02

Функции в цикле не создают.

Smrad 21.11.2008 18:14

Информативно. Спасибо за неоценимую помощь.

Добавлено через 4 минуты
В общем, решилось добавлением дополнительного параметра:
Код AS3:

var ar : Array = new Array();
for (var i : int = 0; i < 10; i++)
{
    var handler : Function =
    function(par:int) : Number
    {
        return i;
    }
    ar.push(handler(i));       
}


Xpb7 21.11.2008 18:20

Smrad, a чем ты не доволен? Тебе ответили на твой вопрос. Зачем тебе такой изврат?

Smrad 21.11.2008 18:28

То что кто-то не умеет использовать определенную технику, это не делает эту технику извратом.

У меня есть массив кнопок. Как в цикле повесить на них однотипные обработчики?

etc 21.11.2008 18:30

Dictionary вас спасёт.

Smrad 21.11.2008 18:32

Цитата:

Сообщение от __etc (Сообщение 778890)
Dictionary вас спасёт.

Если не трудно, объясните подробнее.

etc 21.11.2008 18:39

Повторяться не буду:

http://www.flasher.ru/forum/showthread.php?t=113736

Smrad 21.11.2008 18:44

Цитата:

Сообщение от __etc (Сообщение 778893)
Повторяться не буду:

http://www.flasher.ru/forum/showthread.php?t=113736

Спасибо, но, по моему, это очевидно. Т.е. решение в лоб.

Собственно вопрос был не о том, как решить конкретную проблему, а о том, как решить класс проблем.

Fernando Costa 21.11.2008 18:57

Цитата:

У меня есть массив кнопок.
создайте кнопке класс


Часовой пояс GMT +4, время: 13:55.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.