Форум 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)
-   -   Сортировка массива и слои (http://www.flasher.ru/forum/showthread.php?t=127829)

Stas52 24.07.2009 11:35

Сортировка массива и слои
 
Есть массив. В этом массиве - мувики. У каждого MovieClip есть переменная this_depth.
Задача: в каждом кадре надо отсортировать массив по значениям this_depth и расставить MovieClipы по нужным слоям, в зависимости от this_depth. Неужели это делается методом пузырька? Но это же довольно сложный процесс, учитывая что это должно происходить каждый кадр?

mooncar 24.07.2009 11:40

Что такое "метод пузырька"?

Stas52 24.07.2009 12:03

метод пузырька - http://algolist.manual.ru/sort/bubble_sort.php

iflamberg 24.07.2009 12:06

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

В as3 - именно так и делают. Только используют метод Array.sort - он быстрее. Вот, например, сортировка из изометрической игрушки(на самом деле она сложнее, здесь я ее упростил).
Код:

                function arrange():void {
                        items.sortOn("depth", Array.NUMERIC);
                        var i:int = items.length;
                        while (i--) {
                                if (getChildAt(i) != items[i]) {
                                        setChildIndex(items[i], i);
                                }
                        }
                        lst = items.slice();
                }

Производительность as2 - слишком низкая для этого. Но зато, там мувику можно указать любую глубину из огромного диапазона [-16384,2130690045] (тогда как для as3 мувиков глубина должна иметь исключительно порядковый номер).
Поэтому там применяют сортировку такого типа.
Код:

this.swapDepths(this._x + this._y*isoPlane_width);
Подробнее - у гугла по словам actionscript depth sort

mooncar 24.07.2009 12:09

Сделайте дополнительный временный массив.
1. При единственном обходе основного массива узнаем this_depth элемента, и заполняем дополнительный массив мувиками уже в нужном порядке согласно этим this_depth.
2. Приравниваем исходный массив полученному.
3. Дополнительный удаляем.


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

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