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

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

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

Регистрация: Jan 2012
Сообщений: 836
По умолчанию Скрытие объектов

Всем привет. Столкнулся со следующей проблемой. Есть платформа, по ней двигается персонаж, у него доступен обзор видимости объектов, те объекты что не попадают в обзор - скрываются. Проблема в следующем. В массиве например 200 объектов, по циклу пробегаюсь по каждому и меняю нужному объекту visible на false. Что происходит, объекты скрываются как положено, но фпс адско проседает
Код AS3:
if (CheckRadius(player, GUI.platformsSave[i].obj, 600)) 
				{
					GUI.platformsSave[i].updateVisible(false);
				}else
				{
					GUI.platformsSave[i].updateVisible(true);
				}
Код AS3:
public function updateVisible(flag:Boolean):void
		{
			model.gotoAndStop(setR);
 
			if (flag)
		    {
			model.visible = false;
			}else
			{
			model.visible = true;
			}
			sprite.sprites = [model];
 
 
		}
Подскажите как это дело оптимизировать) Т.к когда все объекты на платформе видимые, фпс проседает в 2 раза примерно при движении.

Добавлено через 4 часа 8 минут
Всё настроил как надо) Надо еще правда поработать над оптимизацией, но в целом повысил фпс)

Старый 03.11.2015, 20:59
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 2  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Я бы сложил все объекты в массив и этот массив отсортировал. Функция сортировки должна помещать объект в массив так, чтобы соблюдалось правило: "чем объект левее на экране, тем он ближе к началу массива".
Соответственно, пробегая по массиву от начала к концу, мы будем перебирать объекты слева направо. Это удобно, особенно если запоминать самый левый и самый правый из видимых объектов (можно бегать не по всему массиву, а только от самого левого влево и от самого правого вправо для изменения видимости объектов).
__________________
...вселенская грусть

Старый 04.11.2015, 03:10
neonoviiwolf вне форума Посмотреть профиль Отправить личное сообщение для neonoviiwolf Найти все сообщения от neonoviiwolf
  № 3  
Ответить с цитированием
neonoviiwolf

Регистрация: Jun 2014
Сообщений: 558
можно по всякому сделать, но ваш косяк в том, что вы в каждом кадре отправляете true/false

я бы, для увеличения производительности наверно бы использовал такой вариант (ну это сходу, уверен, что кто-то получше подскажет).

У примеру завести второй двухмерный чисто числовой массив. В нём будут храниться координаты ваших объектов, а индекс соответствует номеру объекта. Ну и работаем чисто с этим массивом, т.е. меняем тут значения, будто это и есть координаты нашего объекта. Так вот, когда координаты попадают в зону видимости, ТО указываем координаты объекту с соответствующем индексом, передаём ему ссылку на индекс двумерного массива и и объявляем слушатель, который будет присваивать значения двумерного массива к координатам объекта. Вышел из поле зрения, убиваем слушатель, ставим false. Тут фокус в том, что вам не нужно двигать 200 объектов, вам нужно только следить, когда они должны появиться и тогда их выводить, так же уверен, что работа только с числами намного быстрее, особенно если использовать вектор, а не массив. А ещё создайте своего слушателя, который будет следить, когда объект выйдет из поля видимости и скроет его, дабы не заниматься каждый ход проверкой координат, пусть объект сам следит за собой
А если ещё добавить что написано выше..

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

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

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


 


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


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