Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript (http://www.flasher.ru/forum/forumdisplay.php?f=5)
-   -   двумерный массив (http://www.flasher.ru/forum/showthread.php?t=52512)

: hr : 10.12.2003 18:07

Ой, ребята... Сейчас заплачу! :-(


Techmaker, берем Ваш скрипт:

x : 1 | y : 10
x : 2 | y : 30
x : 5 | y : 10
x : 3 | y : 10
x : 2 | y : 20
x : 3 | y : 20
x : 5 | y : 20
x : 1 | y : 20
x : 6 | y : 30
x : 0 | y : 30
after
x : 1 | y : 10
x : 3 | y : 10
x : 5 | y : 10
вот до сюда все ОК

x : 1 | y : 20
x : 5 | y : 20
x : 3 | y : 20
x : 2 | y : 20
x : 0 | y : 30
x : 6 | y : 30
x : 2 | y : 30


а дальше? "y" размещаются верно, а x... почему для y=20 x идут 1,5,3 - нужно ведб 1,3,5
то же для y=30 - почему x 0,6,2 ведь надо 0,2,6!!!!

Jlekc 10.12.2003 18:22

Я же написал. В моем коде:

arr.sortOn(["x", "y"]) замини на arr.sortOn(["y", "x"])

Сортировка роботает нормально !!!

всё еще жду... :D

: hr : 10.12.2003 19:29

Jleks, заменил. Код такой:

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);
}


выводит:
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


а надо:
x : 1 | y : 10
x : 3 | y : 10
x : 5 | y : 10
x : 2 | y : 20
x : 3 | y : 20
x : 2 | y : 30

Jlekc 10.12.2003 19:34

Меня ктонить слишит :D :D :D

ЗАМИНИ arr.sortOn(["x", "y"]); на arr.sortOn(["y", "x"]);

: hr : 10.12.2003 21:36

заменил

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(["y", "x"]);
trace('after');
for (var i = 0; i<arr.length; i++) {
trace('x : '+arr[i].x+' | '+'y : '+arr[i].y);
}

выводит
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

:-(

: hr : 10.12.2003 22:33

Господа, ну неужели на форуме нет ни одного человека, который может мне помочь? Ну помогите начинающему, пожалуйста - для меня это очень важно!!! :o

Usnul 10.12.2003 22:57

и бы предложил создавать сортировщик ручками, может вечерком сделаю.

: hr : 10.12.2003 23:29

Usnul, очень надеюсь!

iLoveYou 10.12.2003 23:31

Код:

arr = [];
arr.push({x:1, y:8});
arr.push({x:3, y:4});
arr.push({x:9, y:5});
arr.push({x:2, y:9});
arr.push({x:5, y:2});
arr.push({x:7, y:6});
arr.push({x:8, y:3});
arr.push({x:4, y:1});
arr.push({x:6, y:7});
arr_len = arr.length;
function sortarr(par) {
        for (var i = 0; i<arr_len; i++) {
                for (var k = i+1; k<arr_len; k++) {
                        if (arr[i][par]>arr[k][par]) {
                                sx = arr[i].x;
                                sy = arr[i].y;
                                arr[i].x = arr[k].x;
                                arr[i].y = arr[k].y;
                                arr[k].x = sx;
                                arr[k].y = sy;
                        }
                }
        }
}
function printarr() {
        for (var i = 0; i<9; i++) {
                trace("x : "+arr[i].x+" | "+"y : "+arr[i].y);
        }
}
printarr();
trace("=======");
sortarr("x");
printarr();
trace("=======");
sortarr("y");
printarr();


Jlekc 11.12.2003 11:58

Ну чувак или у тя Флеш глючит :p , или ... кстати какая у тя версия

У меня трасирует:

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 : 10
x : 5 | y : 10
x : 2 | y : 20
x : 3 | y : 20
x : 2 | y : 30

это то 4ё те надо ???

код прежний
Код:

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(["y", "x"]);
trace('after');
for (var i = 0; i<arr.length; i++) {
trace('x : '+arr[i].x+' | '+'y : '+arr[i].y);
}

может кто проверит сурс, а то я не понимаю юмара :rolleyes:


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

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