Предыдущий массив MC позиция - PullRequest
0 голосов
/ 12 октября 2009

Я в основном пытаюсь создать древовидную диаграмму. Я создал 1-й уровень и хотел поместить его в массив, чтобы следующий уровень мог получить свойства от предыдущего уровня / массива.

Но теперь мне кажется, что я не могу вставить круги с собственным уникальным «именем» в circleNewArray. в чем тут проблема?

Я до сих пор не уверен, что способ, которым я создаю свой код для динамического intance / data / mc с макс. 2 разделением, верен или нет, так как я думаю, что он включает в себя 2–3 массива, чтобы держать его на одном уровне, когда данные загружается и перегруппируется снова при выполнении разделения уровней.

Если у вас есть идея получше, она тоже будет очень признательна. спасибо!

закрытая функция dataLevel (): void {

        rootLevel=new Array();
        rootLevel.push(20,200);

        newArray=new Array();

        var no1:Number=1;
        var no2:Number=2;

        if (rootLevel is Array==true) {
            createBranch(rootLevel);


            for (var j:Number=0; j<rootLevel.length; j++) {
                newArray[j]=new Array();
                newArray[j].push(j);
                createBranch(newArray[j]);
            }
        }
    }


    //-------------------------------------------------------------------


    private function createBranch(runningObj:Object):void {

        circlesNewArray = new Array();
        var i2=i-1;

        for (var i:Number=0; i<runningObj.length; i++) {

            circles = new MovieClip();
            var empty=null;
            circles.graphics.beginFill(0xFF2222);
            circles.graphics.drawCircle(empty,empty,10);
            circles.graphics.endFill();

            //Passing 2 cirls in an Array
            circlesNewArray[i]=new Array();
            circles.name="circles"+i;

            circlesNewArray[i].push(circles[i]);

            if (runningObj==rootLevel) {
                circles.x=trunks.x - (Math.floor(Math.random()*100)-50);
                circles.y=trunks.y - (Math.floor(Math.random()*100));
            } else if (runningObj!=rootLevel) {
                circles.x=circlesNewArray[i2]-(Math.floor(Math.random()*100)-50);
                circles.y=circlesNewArray[i2]-(Math.floor(Math.random()*100));
            }

            //trace(circles.x, circles.y);

            circles.buttonMode=true;
            circles.addEventListener(MouseEvent.CLICK, clickTarget);

            addChild(circles);
        }
    }

1 Ответ

1 голос
/ 12 октября 2009

Вы обращаетесь к переменной i перед ее объявлением. Следовательно, i2 будет присвоено NaN. К сожалению, компилятор игнорирует ошибки такого рода. Во флэш-памяти все локальные переменные метода, независимо от того, где вы объявляете их в коде, объявляются в начале метода, но им присваиваются значения только после того, как код достигает соответствующей строки выполнения.

var i2=i-1;//value of i and hence that of i2 is NaN.
for (var i:Number=0; i<runningObj.length; i++)

Поскольку i2 равно NaN, вызов для доступа к circlesNewArray[i2] не выполняется. Если вы хотите, чтобы i2 имел значение (i - 1), вызовите i2 = i - 1; из цикла for.

Кстати, что вы пытаетесь сделать с этой строкой кода?

circles.x=circlesNewArray[i2]-(Math.floor(Math.random()*100)-50);

Вы помещаете массивы в circlesNewArray, а затем получаете доступ к ним как числам?

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