Создание нового массива для каждой итерации вызова функции.AS3 - PullRequest
0 голосов
/ 05 октября 2011

поэтому я написал функцию, которая возвращает объекты на сцене и помещает их в массив.и функция работает нормально, пока я не вызову функцию для более чем одного имени объекта, то есть если я нахожусь в корневом классе, и я вызываю эту функцию для объекта object1, скажем, он добавит все объекты, находящиеся на сцене, но если я вызовуна object2 он выдаст ошибку, которая имеет некоторый смысл, я думаю, это означает, что он не добавляет его в уникальный массив, но я не уверен, как это сделать.

Будет ли хорошей идеей создать многомерный массив?если это так, будет ли это слишком медленно?

вот код функции:

public function findObjects(objectName, objLocation, bVisible = false):Array{
    for (var i = 0; i < objLocation.numChildren; i++){
        var nObj=objLocation.getChildAt(i);
        if (nObj is objectName){
            // add to array and make invisible
            obj.push(nObj);
            nObj.visible=bVisible;
        }
    }
    return obj;
}

любая помощь с этим будет принята с благодарностью.

1 Ответ

1 голос
/ 05 октября 2011

Попробуйте это:

public function findObjects(type:Class, target:DisplayObjectContainer, bVisible:Boolean=false):Array
{
    var out:Array = [];

    for(var i:int = 0; i<target.numChildren; i++)
    {
        var obj:DisplayObject = target.getChildAt(i);

        if(obj is type)
        {
            out.push(obj);
            obj.visible = bVisible;
        }
    }

    return out;
}

А затем, основываясь на вашем коде, реализация, вероятно, будет:

obj = findObjects(MovieClip, container);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...