Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   глубина объектов (http://www.flasher.ru/forum/showthread.php?t=118695)

BlooDHounD 01.12.2008 19:31

Код AS3:

function test():void {
        var i:uint;
        var t:Number;
        var list:Array = new Array();
 
        for ( i=0; i<1E4; i++ ) {
                list.push( super.addChild( new Sprite() ) );
        }
 
        t = getTimer();
        for ( i=0; i<1E4; i++ ) {
                super.addChild( list[i] as DisplayObject );
        }
        trace( getTimer() - t ); // 1370
 
        var index:uint = super.numChildren - 1;
        t = getTimer();
        for ( i=0; i<1E4; i++ ) {
                super.setChildIndex( list[i] as DisplayObject, index );
        }
        trace( getTimer() - t ); // 1370
 
}
test();

у меня одинакого

s8000_1 01.12.2008 20:34

Ну совпадение-то чисто случайно. У меня они отличаются ненамного (1504 против 1540).

Вывод: или мой тест кривой, или addChild работает для соседних объектов быстрее (а для дальних одинаково по скорости с setChildIndex) :)

BlooDHounD 01.12.2008 21:03

а о количестве детей, Вы не думали? у меня то их 10К, а не 2 штуки.

s8000_1 01.12.2008 21:22

BlooDHounD,
количество детей | разница в скорости (в пользу addChild)
2 12%
20 11%
50 9%
100 5%
(у меня на компьютере по крайней мере)

Так что буду теперь придерживаться мнения, что по большему счету без разницы, чем наверх поднимать. setChildIndex логичнее, да.

BlooDHounD 01.12.2008 21:56

ну, лично мне, наверх поднимать вообще-то очень редко надо. сортировать, надо чаще, а использовать во время сортировки "пузырь", или ещё-то не люблю. в основном сортирую, только изменившийся элемент, тоесть тупо ищу нужно место и перемещаю.
и на моих тестах в таких сортировках, setChildIndex работает быстрее.

zveryuka 26.02.2009 19:05

Вложений: 2
У меня вопрос...

я имею ТРИ кнопки - при нажатии на них ползунок переключается на 10 фрейм...

Код AS3:

stop();
 
 
btn.addEventListener(MouseEvent.MOUSE_DOWN, m);
 function m (event:MouseEvent):void {
if(!this.flag){
                gotoAndPlay(10);
                }
                else{
                        gotoAndPlay(1);
                        }
        this.flag = !this.flag;
}
 
 
 
btn.addEventListener(MouseEvent.MOUSE_OVER, o);
 function o (event:MouseEvent):void {
btn.gotoAndPlay(2);
 
 
 
}
 
btn.addEventListener(MouseEvent.MOUSE_OUT, ou);
 function ou (event:MouseEvent):void {
btn.gotoAndPlay(11);
}
 
 
//BUTTON 2
/////////////////////////////////////////////////////////////////////////////
        btn2.addEventListener(MouseEvent.MOUSE_DOWN, m2);
 function m2 (event:MouseEvent):void {
if(!this.flag){
                gotoAndPlay(10);
                }
                else{
                        gotoAndPlay(1);
                        }
        this.flag = !this.flag;
}
 
btn2.addEventListener(MouseEvent.MOUSE_OVER, o2);
 function o2 (event:MouseEvent):void {
btn2.gotoAndPlay(2);
 
 
 }
 
btn2.addEventListener(MouseEvent.MOUSE_OUT, ou2);
 function ou2 (event:MouseEvent):void {
btn2.gotoAndPlay(11);
}
 
 
//BUTTON 3
/////////////////////////////////////////////////////////////////////////////
        btn3.addEventListener(MouseEvent.MOUSE_DOWN, m3);
 function m3 (event:MouseEvent):void {
if(!this.flag){
                gotoAndPlay(10);
                }
                else{
                        gotoAndPlay(1);
                        }
        this.flag = !this.flag;
}
 
btn3.addEventListener(MouseEvent.MOUSE_OVER, o3);
 function o3 (event:MouseEvent):void {
btn3.gotoAndPlay(2);
 
 }
 
btn3.addEventListener(MouseEvent.MOUSE_OUT, ou3);
 function ou3 (event:MouseEvent):void {
btn3.gotoAndPlay(11);
removeChildrenAt
}


мне захотелось большего и я решил чтоб кнопки вылазили поверх других кнопок....

дописываю к каждой кнопке

Код AS3:

var depth:int = getChildIndex(btn);
swapChildrenAt(depth, numChildren-1);

Код AS3:

btn.addEventListener(MouseEvent.MOUSE_DOWN, m);
 function m (event:MouseEvent):void {
if(!this.flag){
                gotoAndPlay(10);
                }
                else{
                        gotoAndPlay(1);
                        }
        this.flag = !this.flag;
}
 
 
 
btn.addEventListener(MouseEvent.MOUSE_OVER, o);
 function o (event:MouseEvent):void {
btn.gotoAndPlay(2);
 
var depth:int = getChildIndex(btn);
swapChildrenAt(depth, numChildren-1);//поверх всех
//if(depth<numChildren-1) swapChildrenAt(depth, depth + 1);//на уровень выше
 
}
 
btn.addEventListener(MouseEvent.MOUSE_OUT, ou);
 function ou (event:MouseEvent):void {
btn.gotoAndPlay(11);
}

кнопки начинают залазить друг на друга как и требовалось .....НО - при нажатии на кнопку начинаются непонятные залипания изображений и всякое такое...


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

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