Функция AS3 для организации глубины на основе положения z и поворотаX - PullRequest
0 голосов
/ 17 апреля 2011

Есть ли какие-нибудь умные люди, которые могут сказать мне, почему эта функция, над которой я работаю, чтобы автоматически сортировать глубины объектов, помещенных в трехмерную плоскость, работает только периодически?Кажется, работает каждая вторая или третья итерация?

    function zsort(h){
        var zpos=[] //array to store Z positions
        var mc,mcZpos
        for(var i=0; i<h.numChildren-1; i++){
            mc = h.getChildAt(i);
            mcZpos=(mc.z - (Math.sin(mc.rotationX) * mc.height/2)) //get lowest Z point based on X rotation
            zpos.push([mcZpos, mc])
        }
        zpos.sort()
        for(i in zpos){
            h.setChildIndex(zpos[i][1], h.numChildren-1)
        }
    }

Является ли getChildAt (i) надежным?IE возвращает один и тот же порядок каждый раз при запуске или основан на глубине?

РЕДАКТИРОВАТЬ: глядя на руководство, можно предположить, что это, вероятно, последнее, поэтому я предполагаю, что мне нужно будет упорядочить свой собственный массив к тому времени, когда спрайты были добавлены в родительский объект, и работать оттуда.Есть ли лучший способ?

1 Ответ

0 голосов
/ 17 апреля 2011

Этот класс работает, возможно, может быть оптимизирован, но он работает и должен быть хорошим началом:

http://blog.theflashblog.com/?p=470

http://code.google.com/p/leebrimelow/source/browse/#svn%2Ftrunk%2Fas3%2Fcom%2Ftheflashblog%2Futil3d

Поскольку у вас есть проблемы с вашим алгоритмом, это, вероятно, просто лучшее решение (как быстрее начать работать, так и учиться на собственном примере, а не заново изобретать колесо). Если вы хотите сделать что-то кроме этого базового вида трехмерного позиционирования, используйте библиотеку, а именно: away3d .

Всего наилучшего. :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...