Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 17.05.2011, 15:32
stweet вне форума Посмотреть профиль Отправить личное сообщение для stweet Найти все сообщения от stweet
  № 1  
Ответить с цитированием
stweet
 
Аватар для stweet

Регистрация: Mar 2010
Адрес: 54.713862552265084 = 20.442724227905273
Сообщений: 449
Отправить сообщение для stweet с помощью Skype™
По умолчанию 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);
....
ну собственно такой способ даёт возможность создавать только один спрайт,
что по моему мнению весит меньше первого варианта где нужно было создавать три спрайта.

Подскажите, как лучше сделать?
__________________
Спросишь, дурак на минуту. Если не спросишь, дурак на всю жизнь!

Старый 17.05.2011, 15:36
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 2  
Ответить с цитированием
goodguy
Banned
[+1 05.11.11]
[+1 09.08.11]

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
Советую провести тест.
Перед выполнением кода поставить
Код AS3:
var startTime:Number = flash.utils.getTimer();
и после выполнения
Код AS3:
trace(flash.utils.getTimer() - startTime);
И все станет ясно.
Лично не проверял, но что-то мне подсказывает, что перерисовка всегда медленнее

Старый 17.05.2011, 16:12
stweet вне форума Посмотреть профиль Отправить личное сообщение для stweet Найти все сообщения от stweet
  № 3  
Ответить с цитированием
stweet
 
Аватар для stweet

Регистрация: Mar 2010
Адрес: 54.713862552265084 = 20.442724227905273
Сообщений: 449
Отправить сообщение для stweet с помощью Skype™
Т.е. ни кто об этом не задумывался?!... Тогда каким способом чаще, пользуютесь вы?

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

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

Старый 17.05.2011, 16:14
HotIceCream вне форума Посмотреть профиль Отправить личное сообщение для HotIceCream Найти все сообщения от HotIceCream
  № 4  
Ответить с цитированием
HotIceCream
 
Аватар для HotIceCream

Регистрация: Oct 2009
Сообщений: 112
Записей в блоге: 1
дык делайте тысячи операций

Старый 17.05.2011, 16:32
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 5  
Ответить с цитированием
goodguy
Banned
[+1 05.11.11]
[+1 09.08.11]

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
Цитата:
дык делайте тысячи операций
Действительно. Можно ведь выполнить этот цикл не один раз, а, скажем поместить его в другой цикл и запустить его раз 100500 )

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

Создать новую тему Ответ Часовой пояс GMT +4, время: 06:53.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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