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

Сайлас 27.05.2008 19:48

вот х++ не увидишь конечно. А при ремув+эдд оно есть... Быстро конечно все делается и т.п., но заметно.
И если делать у Sprite
.graphics.clear();
.graphics.bitmapFill(bmd);
.graphics.drawRect(..);
.graphics.endFill();
Увидишь как все перемигивается

Ar4ibald 28.05.2008 22:23

у меня процедура обновления происходит около 30 раз в секунду (создаю карусель с картинок). Вот все готово, только не могу с этими слоями чертовыми разобраться.
Сайлас, можете на примере самом простом показать как к мувику allpicholder применить это все, потому чито с ООП знаком меньше месяца и в AS3 изучил пока не все? Буду очень благодарен

Сайлас 29.05.2008 15:02

Ну я же уже выложил. Вот собранный пример. Поддержку динамического изменения zOrder уж сами-то напишете? :)
Код:

public class TestZOrder extends MovieClip
        {
                private var zOrder:Array = new Array;
               
                public function TestZOrder()
                {
                        super();
                }
               
                override public function addChild(child:DisplayObject):DisplayObject
                {
                        throw new Error("Use addChildZOrder!");
                        return null;
                }
               
                override public function addChildAt(child:DisplayObject,index:int):DisplayObject
                {
                        throw new Error("Use addChildZOrder!");
                        return null;
                }
               
                override public function removeChild(child:DisplayObject):DisplayObject
                {
                        if (this.contains(child)) {
                                var i:int = getChildIndex(child);
                                return this.removeChildAt(i);
                        }
                        else {
                                return null;
                        }
                }
               
                override public function removeChildAt(index:int):DisplayObject
                {
                        arrayDelete(zOrder,index);
                        return super.removeChildAt(index);
                }
               
                public function addChildZOrder(child:DisplayObject,zo:int):void
                {
                        if (contains(child))
                                return;
                        var i:int = arrayBSearch(zOrder,zo);
                        arrayInsert(zOrder,i,zo);
                        super.addChildAt(child,i);
                }
               
                public static function arrayInsert(arr:Array,i:int,elem:*):void
                {
                        for(var j:int=arr.length; j > i; --j)
                            arr[j] = arr[j-1];
                          arr[i] = elem;
                }
               
                public static function arrayDelete(arr:Array, i:int):void
                {
                          if(i >= 0){
                    for(; i+1 < arr.length; i++){
                              arr[i] = arr[i+1];
                    }
                    if(i < arr.length)
                              arr.length = arr.length - 1;
                          }
                }
               
                public static function arrayBSearch(arr:Array, val:int, property:String=null, bound:Boolean=true):int
                {
                        var ret:int;
                          var l:int = 0, u:int = arr.length - 1, i:int;
                          ret = -1;
                          while(l <= u){
                            i = (l + u) >> 1;
                            var s:int = (property == null ? arr[i] : arr[i][property]);
                            if    (s > val) u=i-1;
                            else if(s < val) l=i+1;
                            else{ ret = i; break; }
                          }
                          if(ret < 0 && bound)
                            ret = l;
                          return ret;
                }
        }


Ar4ibald 29.05.2008 23:29

я прошу изинение за свой примитивизм, но я не имею представление как это подключить.

Сайлас 29.05.2008 23:34

Подключить в Flash'e или в .as файле, во Flex'e том же? :)

Ar4ibald 29.05.2008 23:36

подключит во Флеше as файл я сумею :), но как применять методы класса к моему
мувику - allpicholder?

Сайлас 29.05.2008 23:44

Если честно, то не знаю, т.к. не разбирался. Сам пишу во флексе, анимирует отдельный человек, если нужно сложная анимация, я умею только во фреймах AS писать, документ класс создать, заэкспортить для АС мувик и т.п. :)
Так что тут я не совсем помощник :)

Ar4ibald 30.05.2008 00:07

блин, ну что поделаешь.
Буду пробовать модель silina, хотя смотря на ваш класс, мне кажеться что идея схожая с идеей silina (возможно я и ошибаюсь)


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

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