Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 19.11.2010, 23:02
Sintesis вне форума Посмотреть профиль Отправить личное сообщение для Sintesis Найти все сообщения от Sintesis
  № 1  
Ответить с цитированием
Sintesis
 
Аватар для Sintesis

Регистрация: Jul 2008
Сообщений: 912
По умолчанию циклы и массивы

Помогите, что-то я застрял не знаю как написать такой цикл:
есть функция в которую передаём массив чисел
Код 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...


Последний раз редактировалось Sintesis; 19.11.2010 в 23:08.
Старый 19.11.2010, 23:19
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 2  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Код 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]));
	}
}

Старый 19.11.2010, 23:36
Sintesis вне форума Посмотреть профиль Отправить личное сообщение для Sintesis Найти все сообщения от Sintesis
  № 3  
Ответить с цитированием
Sintesis
 
Аватар для Sintesis

Регистрация: Jul 2008
Сообщений: 912
Блиииин крууууто!!! Всё получается, спасибо 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]);
 
}

Старый 20.11.2010, 22:49
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 4  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
точно также пройдись с шагом в 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();
?


Последний раз редактировалось i.o.; 20.11.2010 в 22:57.
Старый 20.11.2010, 23:03
Sintesis вне форума Посмотреть профиль Отправить личное сообщение для Sintesis Найти все сообщения от Sintesis
  № 5  
Ответить с цитированием
Sintesis
 
Аватар для Sintesis

Регистрация: Jul 2008
Сообщений: 912
Так как это сделать? Порядок задаётся массивом myNum, vertex должен повторить этот порядок

Старый 20.11.2010, 23:12
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 6  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
разве не points должны повторить порядок vertex'ов в соответствии с myNum?
Перечитайте свой пост номер 3 и поймете, что я вам написал то, что вы в нем просили.

Старый 20.11.2010, 23:27
Sintesis вне форума Посмотреть профиль Отправить личное сообщение для Sintesis Найти все сообщения от Sintesis
  № 7  
Ответить с цитированием
Sintesis
 
Аватар для Sintesis

Регистрация: Jul 2008
Сообщений: 912
Блин, точно, получилось. Спасибо))) теперь разобрался...

Создать новую тему Ответ Часовой пояс GMT +4, время: 23:21.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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