Зацикливание имени функции в as3 - PullRequest
0 голосов
/ 25 июля 2011

Как бы я создал простой цикл для создания этих функций:

function hello1(e:Event):void
{
trace("hi");
}

function hello2(e:Event):void
{
trace("hi");
}

Имя функции идет по порядку, пока не остановится на

function hello10(e:Event):void
{
trace("hi");
}

Я знаю, что могу использовать только одну функцию, но я использую ее в качестве примера для более крупного проекта.

Ответы [ 2 ]

2 голосов
/ 25 июля 2011

Функции, как и любой другой объект, это ActionScript 3. Вы можете передавать их по ссылке.

Попробуйте что-то вроде этого.

var functionList:Array = [];
var func:Function;
var numFunctions:int = 10;
for (var i:int = 0; i < numFunctions; i++) 
{
    func = function(num:Number):void 
    {
        trace(num);
    };
    functionList.push(func);
}

for (var j:int = 0; j < functionList.length; j++) 
{
    func = functionList[j] as Function;
    func(Math.random()* 100);
}
0 голосов
/ 25 июля 2011

Есть много способов сделать это.

Вы можете сохранить все функции в массиве, а затем вызвать указатели на функции.

Или, может быть, что-то вроде:

package
{
    import flash.display.Sprite;
    import flash.events.Event;

    public class HelloLoop extends Sprite
    {

        public function hello1(event:Event):void
        {
            trace("hi - 1");
        }

        public function hello2(event:Event):void
        {
            trace("hi - 2");
        }

        public function hello3(event:Event):void
        {
            trace("hi - 3");
        }


        public function HelloLoop()
        {
            // not sure what event you are passing
            var event:Event = new Event("unknown");

            for (var i:uint = 1; i <= 3; i++)
            {
                this["hello" + i](event);
            }
        }

    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...