Форум 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=146866)

Sintesis 19.11.2010 23:02

циклы и массивы
 
Помогите, что-то я застрял не знаю как написать такой цикл:
есть функция в которую передаём массив чисел
Код AS3:

varMy.nVert([ -100, -114, -110, 120, -102, -112, 101, 109, -104, -111, 100, -121, 
                        -101, -108, 113, 118, -107, 125, 103, 117, 116, -126, 106, 117]);

вот она:
Код AS3:

public function nVert(vertex:Array){
 
                        points = new Array();
                        vertexp = new Array();
                        vertexp = vertex;
 
                        points[0] = new Point3D( vertexp[0], vertexp[1], vertexp[2]);
                        points[1] = new Point3D( vertexp[3], vertexp[4], vertexp[5]);
                        points[2] = new Point3D( vertexp[6], vertexp[7], vertexp[8]);
                        points[3] = new Point3D( vertexp[9], vertexp[10], vertexp[11]);
                        points[4] = new Point3D( vertexp[12], vertexp[13], vertexp[14]);
                        points[5] = new Point3D( vertexp[15], vertexp[16], vertexp[17]);
                        points[6] = new Point3D( vertexp[18], vertexp[19], vertexp[20]);
                        points[7] = new Point3D( vertexp[21], vertexp[22], vertexp[23]);
}

всё правильно, всё получается, но нужно, что-б всё заполнялось автоматически.
Например передали мы массив чисел - vertexp:Array и в массиве points созделся экземпляр класса Point3D который требует 3 числа передаём ему первые три числа из массива vertexp - числа с индексами [0][1][2], как только первые три числа переданы в Point3D, сразу создаётся второй элемент массива points - создаётся новый экземпляр класса Point3D и в его конструктор передаётся следующие три числа из массива vertexp - числа с индексами [3][4][5] и так далее пока не закончатся числа в массиве vertexp...

udaaff 19.11.2010 23:19

Код AS3:

public function nVert(vertex:Array):void
{
        points = [];
 
        var length:int = vertex.length;
        for (var i:int = 0; i < length; i += 3)
        {
                points.push(new Point3D(vertex[i], vertex[i + 1], vertex[i + 2]));
        }
}


Sintesis 19.11.2010 23:36

Блиииин крууууто!!! Всё получается, спасибо udaaff. А то я что-то мудрил, мудрил и запутался

Добавлено через 18 часов 22 минуты
И ещё одна задачка с массивами есть нужно сделать так
передаём числа например:
Код AS3:

varMy.nVert([ 1, 0, 3, 1, 3, 2, 0, 4, 2]);

теперь нужно расставить содержимое массива vertex в соответствии с переданными числами. Содержимое vertex уже задано нужно только расставить индексы так как задано в varMy.nVert
Код AS3:

public function nVert(myNum:Array){
 
                        points = new Array();
                        vertex = new Array();
 
 
                        points[0] = new Point3D( vertex[1], vertex[0], vertex[3]);
                        points[1] = new Point3D( vertex[1], vertex[3], vertex[2]);
                        points[2] = new Point3D( vertex[0], vertex[4], vertex[2]);
 
}


i.o. 20.11.2010 22:49

точно также пройдись с шагом в 3 и задай
Код AS3:

public function nVert(myNum:Array)
{
    points = [];
 
    var length:int = myNum.length;
    for (var i:int = 0; i < length; i += 3)
    {
        points.push( new Point3D( vertex[myNum[i]], vertex[myNum[i+1]], vertex[myNum[i+2]]) );
    }
}

Цитата:

Содержимое vertex уже задано
зачем тогда
Код AS3:

vertex = new Array();

?

Sintesis 20.11.2010 23:03

Так как это сделать? Порядок задаётся массивом myNum, vertex должен повторить этот порядок

i.o. 20.11.2010 23:12

разве не points должны повторить порядок vertex'ов в соответствии с myNum?
Перечитайте свой пост номер 3 и поймете, что я вам написал то, что вы в нем просили.

Sintesis 20.11.2010 23:27

Блин, точно, получилось. Спасибо))) теперь разобрался...


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

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