Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   setChildIndex() - как правильно (http://www.flasher.ru/forum/showthread.php?t=112361)

Ar4ibald 27.05.2008 12:28

Сайлас, спасибо большое, но я еще в AS3 новичок, не сумею к сожалению воспользоваться вашим трудом.(разве что обьяснить :))
Как мне советовали загнал в массивы данные по scaleY и имени мувика, посортировал его, но почему-то слои установить не выходит

Код:

rec_array.sortOn(["xik", "name1"], Array.DESCENDING|Array.NUMERIC );
                                for(i=0; i<rec_array.length; i++){
                                thumb=rec_array[i].name1;
                               
                                trace("Before:  "+rec_array[i].dep);
                                allpicholder.setChildIndex(thumb, rec_array[i].dep-1);
                                            //allpicholder содержит все мувики, которые нужно посортировать
                                trace("After: "+allpicholder.getChildIndex(thumb));

                // индекс мувиков до и после setChildIndex одинаковый               
                                }

Вроде же правильно написал, ошибок не выдает и не работает.

silin 27.05.2008 15:33

для контейнера, содержащего ТОЛЬКО объекты, подлежащие сортировке, можно просто удалить всех, а потом поставить в новом порядке:
Код:

private function sortChilds():void
{
       
        var indxArr:Array = [];
        var len:int = numChildren;

        while (numChildren > 0)
        {
                var child:DisplayObject = getChildAt(0);
                indxArr.push({ child:child, z: zOrder(child)});//zOrder - метод, возвращающий критерий глубины (scaleY, например)
                removeChild(child);
        }
       
        indxArr.sortOn("z", Array.NUMERIC | Array.DESCENDING );
        for (var i:int = 0; i < len; i++)
        {
                addChild(indxArr[i].f);
        }
       
}


Сайлас 27.05.2008 17:01

Удалять плохо - будет веселое перемигивание

allpicholder отнаследуйте от MovieClip или Sprite и добавьте мои методы, раз это контейнер всех необходимых объектов. Не надо будет привязываться ни к имени, ни к scaleX, сами будете задавать зОрдер, хоть рандомом, хоть как.

silin 27.05.2008 17:12

>>будет веселое перемигивание
не будет: изображение выводится один раз, после выполнения кода

ps пример где это реально работает (правда под 10й плеер)

Сайлас 27.05.2008 17:14

А если придется еще раз удалить и добавить или в зОрдере что-то поменять?

silin 27.05.2008 17:16

а если придется, то будем удалять и менять :)
сори, не понял вопроса

Сайлас 27.05.2008 18:01

Ну если динамически изменить зордер и вызвать функцию, где ремувится и добавляется, то дисплейобджект будет мигать

silin 27.05.2008 18:12

не понял опять, показать можешь?
впрочем не важно: если постараться, то можно и браузер уронить..

Сайлас 27.05.2008 18:15

Ну смотри, если по циклу сделать removeChild, а потом делать addChild, то будет небольшое мигание... По крайней мере у меня так происходит

silin 27.05.2008 19:28

а если по циклу сделать x++, то ты увидишь как объект плавно перемещается ?
не хочу спорить, но нет у меня мигания, да и не должно его быть, имхо


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

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