Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Ошибка сортировки Array.sortOn ? (http://www.flasher.ru/forum/showthread.php?t=147927)

Hauts 17.12.2010 14:09

Ошибка сортировки Array.sortOn ?
 
Натолкнулся на неожиданный эффект, которого не могу понять.

На сцене есть несколько одинаковых мувиклипов, лежащих на разной высоте. Мне необходимо поменять их глубину исходя из их положения по вертикали.

Пробую так:
Код AS1/AS2:

function sortDepths() {
        var arr = [];
        var holder = _root;
        for (var i in holder) {
                if (typeof (holder[i]) == 'movieclip') {
                        arr.push(holder[i]);
                }
        }
        arr.sortOn("_y",Array.NUMERIC | Array.DESCENDING);
        for (var k = 0; k<arr.length; k++) {
                arr[k].swapDepths(k);
                trace(arr[k]._y+" \t\t"+arr[k].getDepth());
        }
}
sortDepths();

В оутпут выкидывает следующее:
Код:

60                0
90                1
120                2
150                3
180                4
210                5
240                6
270                7
0                8
30                9
300                10

Две строчки перед последней ставят меня в тупик. Почему так происходит и как нужно изменить сортировку, чтобы работало правильно?

Добавлено через 1 час 2 минуты
Решил свою ошибку:
Код AS1/AS2:

arr.sortOn("_y",Array.NUMERIC | Array.RETURNINDEXEDARRAY);



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

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