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

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Flash > ActionScript

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

Регистрация: Nov 2003
Сообщений: 290
По умолчанию двумерный массив

Друзья, помогите, что-то прямо творческий кризис настал :-(
Нужно упорядочить двумерный массив координат чтобы получилось так:

элементы должны идти сначала по возрастанию x, потом у...

допустим:
y1=-30;x1=0;
y2=-30;x2=10;
y3=-30;x3=20;
y4=-30;x4=30;

y5=-20;x5=0;
y6=-20;x6=10;
y7=-20;x7=20;
y8=-20;x8=30;

y9=-10;x9=0;
y10=-10;x10=10;
y11=-10;x11=20;
y12=-10;x12=30;

for (i=1; i<mass.length; i++) {
координата x записана в массиве mass[i][0]
координата y mass[i][1]
}

Заранее спасибо!!! Пиво с меня!

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

Регистрация: Mar 2001
Адрес: во сне
Сообщений: 2,701
Отправить сообщение для Usnul с помощью ICQ
legche sostavljat' massiv kak popalo, a potom formatirovat', 'to prosche, i v plane vesaq, i v plane skorosti.
__________________
I'm only happy when it rains.
Waka Laka

Старый 09.12.2003, 16:53
Techmaker вне форума Посмотреть профиль Отправить личное сообщение для Techmaker Найти все сообщения от Techmaker
  № 3  
Techmaker
"человек"
 
Аватар для Techmaker

Регистрация: Nov 2002
Адрес: +-
Сообщений: 1,807
for(mass=[],i=0,y=-30;y<=-10;y+=10){
for(x=0;x<=30;x+=10,i++){
mass[i]=[];
mass[i][0]=x;
mass[i][1]=y;
};
};
for(i2=0;i2<i;i2++){
trace(mass[i2]);
};
__________________
flash it

Старый 09.12.2003, 17:00
Techmaker вне форума Посмотреть профиль Отправить личное сообщение для Techmaker Найти все сообщения от Techmaker
  № 4  
Techmaker
"человек"
 
Аватар для Techmaker

Регистрация: Nov 2002
Адрес: +-
Сообщений: 1,807
mass_x=[12,56,48,21,36];
mass_y=[542,226,40,58,0];
mass_x.sort(function(){return(arguments[0]>arguments[1]);});
mass_y.sort(function(){return(arguments[0]>arguments[1]);});
mass=[];
for(i in mass_x){mass[i]=[mass_x[i],mass_y[i]];};
for(i=0;i<mass.length;i++){trace(mass[i]);};

сортировка
__________________
flash it

Старый 09.12.2003, 18:59
: hr : вне форума Посмотреть профиль Отправить личное сообщение для : hr : Найти все сообщения от : hr :
  № 5  
: hr :

Регистрация: Nov 2003
Сообщений: 290
так у меня массив и составляется как попало! это я для примера написал, главное - мне нужно упорядочить его по правилу, написанному в таблице.

Techmaker, У Вас сортируется по возрастанию mass_x и mass_y, а потом выводятся, а это же связанные значения, т.е.
не должно быть в начале

[12,56,48,21,36];
[542,226,40,58,0];

а потом

12,0
21,40
36,58
48,226
56,542

нужно - берем самое маленькое значение y - для него выводим по мере возрастания x (в случае наличия нескольких x с одинаковым y) - это сформировались n певых значений выходного массива

дальше взяли следующее по величине значение y - для него вывели x по мере возрастания...

и т.д. - посмотрите внимательно, пожалуйста, в пример который я привел!

HELP!!!

Старый 09.12.2003, 19:25
Jlekc вне форума Посмотреть профиль Отправить личное сообщение для Jlekc Найти все сообщения от Jlekc
  № 6  
Jlekc
 
Аватар для Jlekc

Регистрация: Dec 2003
Адрес: Leopolis
Сообщений: 398
Отправить сообщение для Jlekc с помощью ICQ
Тебе обязательно делать сортировку в AS 1, может AS2 подойдет ??

Старый 09.12.2003, 19:59
Jlekc вне форума Посмотреть профиль Отправить личное сообщение для Jlekc Найти все сообщения от Jlekc
  № 7  
Jlekc
 
Аватар для Jlekc

Регистрация: Dec 2003
Адрес: Leopolis
Сообщений: 398
Отправить сообщение для Jlekc с помощью ICQ
Я тут глянул функция 'sortOn' введена с шестёрки, так что этот сурс подойдет

Код:
arr = [];
arr[0] = {x:1, y:10};
arr[1] = {x:2, y:30};
arr[2] = {x:5, y:10};
arr[3] = {x:3, y:10};
arr[4] = {x:2, y:20};
arr[5] = {x:3, y:20};
for (var i = 0; i<arr.length; i++) {
	trace('x : '+arr[i].x+' | '+'y : '+arr[i].y);
}
arr.sortOn(["x", "y"]);
trace('after');
for (var i = 0; i<arr.length; i++) {
	trace('x : '+arr[i].x+' | '+'y : '+arr[i].y);
}
если подошол жду обещенной награды


Последний раз редактировалось Jlekc; 09.12.2003 в 20:01.
Старый 09.12.2003, 22:16
: hr : вне форума Посмотреть профиль Отправить личное сообщение для : hr : Найти все сообщения от : hr :
  № 8  
: hr :

Регистрация: Nov 2003
Сообщений: 290
Млин!!!!! Наверное я что-то объясняю не правильно... :-( Jlekc огромное спасибо, что пытаетесь помочь, награда будет, но
у Вас:

x : 1 | y : 10
x : 2 | y : 30
x : 5 | y : 10
x : 3 | y : 10
x : 2 | y : 20
x : 3 | y : 20
after
x : 1 | y : 10
x : 3 | y : 20
x : 2 | y : 20
x : 3 | y : 10
x : 5 | y : 10
x : 2 | y : 30


а мне нужно:

after
x : 1 | y : 10
x : 3 | y : 10
x : 5 | y : 10
x : 2 | y : 20
x : 3 | y : 20
x : 2 | y : 30

Видите в чем разница? Сначала для наименьшего y(10) перебираются по-возрастанию все x(1,3,5),
потом для следующего по величине y(20) - все x по возрастанию(2,3), затем для следующего y(30) и т.д.

Я уже голову сломал - никак не получается

Старый 10.12.2003, 11:52
Jlekc вне форума Посмотреть профиль Отправить личное сообщение для Jlekc Найти все сообщения от Jlekc
  № 9  
Jlekc
 
Аватар для Jlekc

Регистрация: Dec 2003
Адрес: Leopolis
Сообщений: 398
Отправить сообщение для Jlekc с помощью ICQ
посмотри в синтаксис 'sortOn', можно делать сортировку по любому элементу. Я написал sortOn([ "x" , "y" ]) как общий пример.
А тебе надо sortOn([ "y", "x" ]). Извини упустил

Старый 10.12.2003, 16:06
Techmaker вне форума Посмотреть профиль Отправить личное сообщение для Techmaker Найти все сообщения от Techmaker
  № 10  
Techmaker
"человек"
 
Аватар для Techmaker

Регистрация: Nov 2002
Адрес: +-
Сообщений: 1,807
вот сделал, основываясь на примере Jlekc'а
Код:
arr = [];
arr[0] = {x:1, y:10};
arr[1] = {x:2, y:30};
arr[2] = {x:5, y:10};
arr[3] = {x:3, y:10};
arr[4] = {x:2, y:20};
arr[5] = {x:3, y:20};
for (var i = 0; i<arr.length; i++) {
	trace('x : '+arr[i].x+' | '+'y : '+arr[i].y);
}
arr.sort(function(){return(arguments[0].y>arguments[1].y)});
trace('after');
for (var i = 0; i<arr.length; i++) {
	trace('x : '+arr[i].x+' | '+'y : '+arr[i].y);
}
__________________
flash it

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

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

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


 


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


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