Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Что следует убрать из EnterFrame, а что следует оставить? (http://www.flasher.ru/forum/showthread.php?t=210625)

zCHESNOKz 11.04.2015 21:23

Что следует убрать из EnterFrame, а что следует оставить?
 
Посмотрев свою флешку в Adobe Scout я увидел, что основная нагрузка лежит на EnterFrame. Опытные ребята, подскажите пожалуйста, что следует убрать из EnterFrame, а что следует оставить? Например обновление текстовых полей, циклы, и т.п.

Со временем я заметил, что почти все что находится в EnterFrame (различные обновления данных и визульной части) можно перенести в отдельные функции и вызывать по необходимости, например после клика, единоразово, экономя тем самым производительность, наверное. Насколько я правильно сообразил на счет этого? Это будет считаться оптимизацией?

Нужно ли стремится всегда убирать все лишнее из EnterFrame, и по возможности выключать его когда он не нужен? (для еще большей оптимизации :D)

ZackMercury 11.04.2015 21:29

Да .

caseyryan 11.04.2015 22:09

Ну вопрос конечно странноватый, это же чисто здравый смысл. Зачем постоянно выполнять код, который нужно выполнить только один раз? Естественно не нужно это держать enterFrame.

zCHESNOKz 11.04.2015 22:41

век живи - век учись :D

neonoviiwolf 12.04.2015 01:48

В тему, установил скаут, поглядел, на код приходиться 2-5% нагрузки - остальное графика, у меня ток спрайты и мувики, вообще ничего серьёзного, но ест прилично и иногда фпс падает ниже 60. Так вот вопрос, начал читать про Bitmap - это может помочь? у меня только один неподвижный спрайт - это задний план, да и то он 1600/1050.

ZackMercury 12.04.2015 01:50

Цитата:

Bitmap - это может помочь?
Конечно может.
http://www.ant-karlov.ru/iz-vektora-v-rastr.html

neonoviiwolf 12.04.2015 11:29

Дык у меня нет векторной графики, всё в png

Tails 12.04.2015 11:45

Попробуйте поюзать cacheAsBitmap

caseyryan 12.04.2015 12:06

Цитата:

Попробуйте поюзать cacheAsBitmap
Зачем, если у него и так все в png?

Tails 12.04.2015 12:36

Цитата:

Сообщение от caseyryan (Сообщение 1181223)
Зачем, если у него и так все в png?

Если вложенных png мнгого, можно попробовать родителя закешировать.

neonoviiwolf 12.04.2015 14:35

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

neonoviiwolf 12.04.2015 14:38

Вложений: 1
вот график, мож я его не правильно понимаю

Tails 12.04.2015 15:02

А сколько спрайтов вы создаёте? И они все на стейдже?

neonoviiwolf 12.04.2015 15:19

через new около 50 bullet(на сцене около 20-25 постоянно и если сам начинаешь быстро жать на "огонь" дойдёт до 50) и около 15 одинаковых кораблей, 8 из них на сцене + у каждого корабля есть анимация двигателя (по 2 штуки на каждого(последовательность рисунков png)) - для всего этого есть свой отдельный пул.

Tails 12.04.2015 18:59

Вообщем:
1. Тестировать лучше в релизном плеере с релизной компиляцией.
2. Проседания фпс ниже 60, на обычном дисплей листе - это не так уж и плохо. Не гпу же. Тут стоит озаботиться, если фпс ниже 25-30 будет.
3. В качестве облегчения нагрузки, нужно отключить интерактивность у всех дисплей объектов, не участвующих в взаимодействий с пользователем. (Свойства mouseEnabled и mouseChildren) Лучше всего - выставить эти свойства в false у главного контейнера - содержащего корабли, пули, планеты. То есть тех, кому не нужны мышиные события и вообще события ввода.
4. Иметь 1-3 enterFrame на всю игру, не нужно подписывать каждый спрайт на это событие.
5. Анимацию на основе пнг картинок можно сделать более разряженной. (не 1 а 3-5 кадров на картинку)

Если результаты всё равно не устраивают, стоит посмотреть в сторону какого нибудь графического движка. Хотя на мой взгляд, для флеш игры с обычным рендером, 30 фпс - это вполне хорошо, даже отлично. Более того, я сомневаюсь, что тут удастся добиться 60 фпс при сколь нибудь активном действии на экране. Для обычного рендера 30 фпс вполне хватит.


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

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