|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: May 2013
Адрес: (0, 0)
Сообщений: 176
|
Как сделать связь между Y и ChildIndex мувиклипа? (Z-последовательность) #Решено
Всем привет! Помогите кому не лень)
Есть массив с клипами которые добавляются поочередно и также по ходу дела могут быть удалены. Мне же нужно что бы было так: чем больше у клипа Y тем меньше его позиция индекса в списке дочерних элементов относительно всех остальных клипов в массиве. Как это реализовать? #Решено! Спасибо callme addChild(clip); plant_arr.push(clip); clip_arr.sortOn("y", Array.NUMERIC); for (var i:int = 0; i < clip_arr.length; i++) { addChild(clip_arr[i]); } Последний раз редактировалось zCHESNOKz; 23.12.2015 в 23:43. |
|
|||||
Если массив имеется ввиду обычный массив или вектор, то у них есть метод sort, куда можно передать нужную функцию для сортировки.
Если надо сортировать детей DisplayObjectContainer, то придётся написать алгоритм сортировки самостоятельно. Пригодится метод swapChildrenAt.
__________________
Дети не должны знать о своих родителях |
|
|||||
Регистрация: May 2013
Адрес: (0, 0)
Сообщений: 176
|
Цитата:
только как?( Последний раз редактировалось zCHESNOKz; 02.12.2015 в 20:25. |
|
|||||
Регистрация: Dec 2014
Сообщений: 312
|
var clips:Array = new Array(); var clip1:MovieClip = new MovieClip(); clip1.y = 10; var clip2:MovieClip = new MovieClip(); clip2.y = 70; var clip3:MovieClip = new MovieClip(); clip3.y = 50; clips.push(clip1); clips.push(clip2); clips.push(clip3); clips.sortOn('y', Array.NUMERIC); for (var i:int = 0; i < clips.length; i++) { addChild(clips[i]); } |
|
|||||
callme,
Скорее всего, человеку нужно сортировать динамический список отображения, поэтому такой хитрый план с отдельным массивом не подойдёт. zCHESNOKz, Вам просто нужно обойти список отображения особым способом. То есть, используя один из алгоритмов сортировок. Готового решения у меня нету.
__________________
Дети не должны знать о своих родителях |
|
|||||
Цитата:
|
|
|||||
Так и думал, что просто так от этого "лёгкого пути" не откажутся.
Список отображения уже является массивом. Зачем плодить ещё? Всё это будут костыли только ради использования нативного sort. Так код усложнится, потребление памяти и цп вырастет. Правильным решением будет написать всего одну функцию, в которой реализовать подходящий алгоритм сортировки, с минимальными ресурсозатратами. Она потом на всю жизнь пригодится.
__________________
Дети не должны знать о своих родителях |
|
|||||
Регистрация: May 2013
Адрес: (0, 0)
Сообщений: 176
|
Цитата:
Это получается как в изометрии. Или там как то проще все считается? |
|
|||||
В изометрии ещё бывает, что к y прибавляют x. То есть сортируется как: 1.x + 1.y > 2.x + 2.y Это нужно для того, чтоб объекты стоящие на одинаковой y не "скакали" в списке отображения.
В играх код никогда не был простым. Самое простое решение это сортировать элементы "каждый с каждым". Но понятное дело, что с такой сортировкой вы сможете показать на экране совсем не много объектов, перед тем как приложение начнёт фризить и виснуть. Поэтому, я дал вам ссылку на вики, где описываются различные алгоритмы сортировок. Нужно прочитать, изучить, выбрать самый оптимальный вариант под свои конкретные нужды и реализовать.
__________________
Дети не должны знать о своих родителях |
|
|||||
Регистрация: May 2013
Адрес: (0, 0)
Сообщений: 176
|
Цитата:
Я понял. Я тоже сортировал массив по 'y'. А дальше, как относительно положения в (отсортированном) массиве расположить графические объекты с нужным положением глубины отображения? |
Часовой пояс GMT +4, время: 20:49. |
|
« Предыдущая тема | Следующая тема » |
|
|