Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Scaly || addChild ??? (http://www.flasher.ru/forum/showthread.php?t=156169)

stweet 17.05.2011 15:32

Scaly || addChild ???
 
Час добрый форумчане.

Операясь на вашу практику, хочу обсудить быстродействие флешь плеера.
Посоветуйте, как будет лучше и менее затратно изменять размеры объектов?

Есть как бы 2 варианта, либо скейлить либо перерисовывать.

В пример возмём обычный спрайт и делаем панель.

верхняя часть top; Скейлится только по горизонтали.
средняя часть center; Скейлится как угодено.
нижняя часть bottom; Скейлится только по горизонтали.

далее:
есть сортировщик который обновляет позиции спрайтов в зависимости от их высоты:
Код AS3:

sort(top, center, bottom);
function sort (... arg)
    yPos:int = 0;
 
    for(i, i < 3, i++)
    {
        arg[i].y = yPos;
        yPos += arg[i].height;
    }
// написал код что бы было более понятно о чём я виду речь.

и есть метод который изменяет (скейлит) размеры спрайтов согласно их инструкциям.

ну а второй способ постоянно перерисовывает спрайты с новыми параметрами.
т.е.
Код AS3:

graphics.clear();
graphics.beginFill(... new arg);
....

ну собственно такой способ даёт возможность создавать только один спрайт,
что по моему мнению весит меньше первого варианта где нужно было создавать три спрайта.

Подскажите, как лучше сделать?

goodguy 17.05.2011 15:36

Советую провести тест.
Перед выполнением кода поставить
Код AS3:

var startTime:Number = flash.utils.getTimer();

и после выполнения
Код AS3:

trace(flash.utils.getTimer() - startTime);

И все станет ясно.
Лично не проверял, но что-то мне подсказывает, что перерисовка всегда медленнее

stweet 17.05.2011 16:12

Т.е. ни кто об этом не задумывался?!... Тогда каким способом чаще, пользуютесь вы?

Или, если кто писал приложения где использовались методы "авто скела" либо можно было увеличить рабочую область потянув курсором за уголок окна, использовали первый подход(первый пост)?

Цитата:

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

HotIceCream 17.05.2011 16:14

дык делайте тысячи операций

goodguy 17.05.2011 16:32

Цитата:

дык делайте тысячи операций
Действительно. Можно ведь выполнить этот цикл не один раз, а, скажем поместить его в другой цикл и запустить его раз 100500 )

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


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

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