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

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

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

Регистрация: Aug 2006
Адрес: Химки, МО
Сообщений: 7
Отправить сообщение для Тимон с помощью ICQ
По умолчанию Очередная тема про сортировку массивов

Искал по форуму, но подходящего мне не нашёл.
Проблема такая:

имеется массив plain
выглядит так
plain = [0, 1, 2, 3...]
в свою очередь
plain[0] = [texture, x1, y1, x2, y2, z]
plain[1] = [texture, x1, y1, x2, y2, z]
plain[2] = [texture, x1, y1, x2, y2, z]
plain[3] = [texture, x1, y1, x2, y2, z]
plain[...] = [texture, x1, y1, x2, y2, z]
ну и так далее...

нужно создать массив, например z_array, элементы которого - это номера элементов массива plain, расположить их надо в порядке возрастания z
т.е.
например:
plain[0][z] = 0
plain[1][z] = 100
plain[2][z] = 25
в этом случае z_array должен выглядеть так:
z_array = [0, 2, 1]

как это сделать?
заранее спасибо

Старый 10.08.2006, 00:59
Sh@man вне форума Посмотреть профиль Отправить личное сообщение для Sh@man Найти все сообщения от Sh@man
  № 2  
Ответить с цитированием
Sh@man
 
Аватар для Sh@man

Регистрация: Mar 2002
Сообщений: 840
Отправить сообщение для Sh@man с помощью AIM Отправить сообщение для Sh@man с помощью Skype™
Читай про метод Array.sortOn в хелпе
__________________
www.maxshaman.com

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

Регистрация: Nov 2005
Сообщений: 221
Возможно пойду на поводу =)
можно так:
Код:
plain.sortOn("5");
__________________
Fiat lux

Старый 10.08.2006, 15:13
Тимон вне форума Посмотреть профиль Отправить личное сообщение для Тимон Посетить домашнюю страницу Тимон Найти все сообщения от Тимон
  № 4  
Ответить с цитированием
Тимон
 
Аватар для Тимон

Регистрация: Aug 2006
Адрес: Химки, МО
Сообщений: 7
Отправить сообщение для Тимон с помощью ICQ
получилось
но z_array = plain.sortOn("5") выдаёт не
z_array = [0, 2, 1]
а расписывает все массивы т.е.
z_array = [plain[0][texture], plain[0][x1], plain[0][y1], plain[0][x2], plain[0][y2], plain[0][z], plain[2][texture], plain[2][x1], plain[2][y1], plain[2][x2], plain[2][y2], plain[2][z], plain[1][texture], plain[1][x1], plain[1][y1], plain[1][x2], plain[1][y2], plain[1][z]]

Старый 10.08.2006, 15:25
AlexSol вне форума Посмотреть профиль Отправить личное сообщение для AlexSol Найти все сообщения от AlexSol
  № 5  
Ответить с цитированием
AlexSol

Регистрация: Dec 2005
Сообщений: 316
Код:
var arr:Array = new Array();
arr[0] = ['12', 2];
arr[1] = ['12', 0];
arr[2] = ['12', 9];
arr[3] = ['12', 3];
var newArr:Array = new Array(arr.length);
for (i=0; i<arr.length; i++) {
	for (j=0; j<arr.length-1; j++) {
		if (arr[j][1]>arr[j+1][1]) {
			zapas = arr[j];
			arr[j] = arr[j+1];
			arr[j+1] = zapas;
			newArr[j] = j+1;
			newArr[j+1] = j;
		}
	}
}
trace(arr.join('\n'));
trace(newArr.join('\n'));

Старый 10.08.2006, 18:40
KPaul вне форума Посмотреть профиль Отправить личное сообщение для KPaul Найти все сообщения от KPaul
  № 6  
Ответить с цитированием
KPaul
 
Аватар для KPaul

Регистрация: Nov 2005
Сообщений: 221
Цитата:
получилось
но z_array = plain.sortOn("5") выдаёт не
z_array = [0, 2, 1]
а расписывает все массивы т.е.
Дык понятное дело, что он вернет тебе массив plain, но он будет отсортирован по "z". Остается лишь выбрать:
Код:
for(var i=0; i<plain.length; ++i){
	trace("z="+plain[i][5]);
}
__________________
Fiat lux

Старый 10.08.2006, 19:34
Тимон вне форума Посмотреть профиль Отправить личное сообщение для Тимон Посетить домашнюю страницу Тимон Найти все сообщения от Тимон
  № 7  
Ответить с цитированием
Тимон
 
Аватар для Тимон

Регистрация: Aug 2006
Адрес: Химки, МО
Сообщений: 7
Отправить сообщение для Тимон с помощью ICQ
Короче, исправив код AlexSol, всё получилось
теперь другой вопрос, есть ли такая функция, чтобы поднять объект наверх
(ака Shift+Ctrl+Up)?

Старый 10.08.2006, 20:34
AlexSol вне форума Посмотреть профиль Отправить личное сообщение для AlexSol Найти все сообщения от AlexSol
  № 8  
Ответить с цитированием
AlexSol

Регистрация: Dec 2005
Сообщений: 316
mc.swapDepth(1000)

Старый 10.08.2006, 21:00
Тимон вне форума Посмотреть профиль Отправить личное сообщение для Тимон Посетить домашнюю страницу Тимон Найти все сообщения от Тимон
  № 9  
Ответить с цитированием
Тимон
 
Аватар для Тимон

Регистрация: Aug 2006
Адрес: Химки, МО
Сообщений: 7
Отправить сообщение для Тимон с помощью ICQ
эмм...
как это юзать? 0_о
вот у меня есть _root[texture + n]
её надо поднять наверх...

Старый 11.08.2006, 10:45
AlexSol вне форума Посмотреть профиль Отправить личное сообщение для AlexSol Найти все сообщения от AlexSol
  № 10  
Ответить с цитированием
AlexSol

Регистрация: Dec 2005
Сообщений: 316
Код:
_root[texture + n].swapDepths(_root.getNextHighestDepth())

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

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

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


 


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


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