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

Тимон 09.08.2006 21:33

Очередная тема про сортировку массивов
 
Искал по форуму, но подходящего мне не нашёл.
Проблема такая:

имеется массив plain
выглядит так
plain = [0, 1, 2, 3...]
в свою очередь
plain[0] = [texture, x1, y1, x2, y2, z]
plain[1] = [texture, x1, y1, x2, y2, z]
plain[2] = [texture, x1, y1, x2, y2, z]
plain[3] = [texture, x1, y1, x2, y2, z]
plain[...] = [texture, x1, y1, x2, y2, z]
ну и так далее...

нужно создать массив, например z_array, элементы которого - это номера элементов массива plain, расположить их надо в порядке возрастания z
т.е.
например:
plain[0][z] = 0
plain[1][z] = 100
plain[2][z] = 25
в этом случае z_array должен выглядеть так:
z_array = [0, 2, 1]

как это сделать?
заранее спасибо :)

Sh@man 10.08.2006 00:59

Читай про метод Array.sortOn в хелпе

KPaul 10.08.2006 02:17

Возможно пойду на поводу =)
можно так:
Код:

plain.sortOn("5");

Тимон 10.08.2006 15:13

получилось
но z_array = plain.sortOn("5") выдаёт не
z_array = [0, 2, 1]
а расписывает все массивы т.е.
z_array = [plain[0][texture], plain[0][x1], plain[0][y1], plain[0][x2], plain[0][y2], plain[0][z], plain[2][texture], plain[2][x1], plain[2][y1], plain[2][x2], plain[2][y2], plain[2][z], plain[1][texture], plain[1][x1], plain[1][y1], plain[1][x2], plain[1][y2], plain[1][z]] :) :) :)

AlexSol 10.08.2006 15:25

Код:

var arr:Array = new Array();
arr[0] = ['12', 2];
arr[1] = ['12', 0];
arr[2] = ['12', 9];
arr[3] = ['12', 3];
var newArr:Array = new Array(arr.length);
for (i=0; i<arr.length; i++) {
        for (j=0; j<arr.length-1; j++) {
                if (arr[j][1]>arr[j+1][1]) {
                        zapas = arr[j];
                        arr[j] = arr[j+1];
                        arr[j+1] = zapas;
                        newArr[j] = j+1;
                        newArr[j+1] = j;
                }
        }
}
trace(arr.join('\n'));
trace(newArr.join('\n'));


KPaul 10.08.2006 18:40

Цитата:

получилось
но z_array = plain.sortOn("5") выдаёт не
z_array = [0, 2, 1]
а расписывает все массивы т.е.
Дык понятное дело, что он вернет тебе массив plain, но он будет отсортирован по "z". Остается лишь выбрать:
Код:

for(var i=0; i<plain.length; ++i){
        trace("z="+plain[i][5]);
}


Тимон 10.08.2006 19:34

Короче, исправив код AlexSol, всё получилось :)
теперь другой вопрос, есть ли такая функция, чтобы поднять объект наверх
(ака Shift+Ctrl+Up)?

AlexSol 10.08.2006 20:34

mc.swapDepth(1000)

Тимон 10.08.2006 21:00

эмм...
как это юзать? 0_о
вот у меня есть _root[texture + n]
её надо поднять наверх...

AlexSol 11.08.2006 10:45

Код:

_root[texture + n].swapDepths(_root.getNextHighestDepth())

Тимон 11.08.2006 14:26

проблема теперь такая
есть прямоугольная область, которую надо заполнить текстурой
текстура - растровое изображение 64х64
если область например 65х64, то ставится 2 текстуры.
можно ли как-нибудь обрезать или есть ли функция заполнения области текстурой.

KidsKilla 11.08.2006 14:58

создай новую тему


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

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