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

Jlekc 11.12.2003 12:45

Я работал MX 2004
там стоят фильтры на прием аргументов возможно в 6-ки это и вызывает глюк

Попробуй убери скобки:
вместо arr.sortOn(["y", "x"]);
напиши arr.sortOn("y", "x");
Нет подрукой 6-ки чтоб проверить, но должно сработать

Если сработает назовите меня Super Mega Gosu Отцом :D :D :D

nuran 11.12.2003 15:01

Цитата:

Оригинал написал(а) Sergey"iLoveYou"
Код:

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


Ну а кудаж без Сергея то ..., естественно он тут как тут. Любимая тема...

: hr : 11.12.2003 18:07

Sergey"iLoveYou",

Код:

arr = [];
arr.push({x:1, y:8});
arr.push({x:1, y:5});
arr.push({x:1, y:9});
arr.push({x:1, y:7});
arr.push({x:1, y:6});
arr.push({x:1, y:1});
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_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<11; i++) {
                trace("x : "+arr[i].x+" | "+"y : "+arr[i].y);
        }
}
printarr();
trace("=======");
sortarr("x");
printarr();
trace("=======");
sortarr("y");
printarr();

выводит:


x : 1 | y : 8
x : 1 | y : 5
x : 1 | y : 9
x : 1 | y : 7
x : 1 | y : 6
x : 1 | y : 1
x : 3 | y : 4
x : 9 | y : 5
x : 2 | y : 9
x : 5 | y : 2
x : 7 | y : 6
=======
x : 1 | y : 8
x : 1 | y : 5
x : 1 | y : 9
x : 1 | y : 7
x : 1 | y : 6
x : 1 | y : 1
x : 2 | y : 9
x : 3 | y : 4
x : 5 | y : 2
x : 7 | y : 6
x : 9 | y : 5
=======
x : 1 | y : 1
x : 5 | y : 2
x : 3 | y : 4
x : 1 | y : 5
x : 9 | y : 5
x : 7 | y : 6
x : 1 | y : 6
x : 1 | y : 7
x : 1 | y : 8
x : 1 | y : 9
x : 2 | y : 9


:( :( :( :(

Flash 6 MX

Jlekc 11.12.2003 18:16

Слишь hr
Пробывал убрать скобки:
вместо arr.sortOn(["y", "x"]);
напиши arr.sortOn("y", "x");

жутко интиресно :)

: hr : 11.12.2003 18:46

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};
arr[6] = {x:7, y:20};
arr[7] = {x:4, 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
x : 7 | y : 20
x : 4 | y : 20
after
x : 1 | y : 10
x : 3 | y : 10
x : 5 | y : 10
x : 4 | y : 20
x : 7 | y : 20
x : 2 | y : 20
x : 3 | y : 20
x : 2 | y : 30

Jlekc 11.12.2003 18:58

а меня:
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 : 7 | y : 20
x : 4 | y : 20
after
x : 3 | y : 10
x : 5 | y : 10
x : 1 | y : 10
x : 2 | y : 20
x : 3 | y : 20
x : 7 | y : 20
x : 4 | y : 20
x : 2 | y : 30

посмотри синтаксис функции sortOn. В хелпаке всегда есть рабочий пример.
Или достать нормальный флеш ( у всех работает ) :p

: hr : 11.12.2003 19:15

а мне то нужно

after

x : 1 | y : 10
x : 3 | y : 10
x : 5 | y : 10
x : 2 | y : 20
x : 3 | y : 20
x : 4 | y : 20
x : 7 | y : 20
x : 2 | y : 30


:confused:

: hr : 11.12.2003 20:53

Ребята, выручайте... :o

Что делать то? Может кто иной способ сортировки предложит? Другой Flash сейчас возможности нет достать.

:rolleyes:

Usnul 11.12.2003 23:40

пишу, скоро будет :)

iLoveYou 11.12.2003 23:45

: hr :, предложенный мной алгоритм работает, только он не учитывает, как выясняется, все твои требования. подумаю -- переделаю. а ты тоже без дела не сиди -- поищи в инете алгоритмы сортировки двумерных массивов.


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

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