![]() |
Скрытие объектов
Всем привет. Столкнулся со следующей проблемой. Есть платформа, по ней двигается персонаж, у него доступен обзор видимости объектов, те объекты что не попадают в обзор - скрываются. Проблема в следующем. В массиве например 200 объектов, по циклу пробегаюсь по каждому и меняю нужному объекту visible на false. Что происходит, объекты скрываются как положено, но фпс адско проседает
Код AS3:
Код AS3:
Добавлено через 4 часа 8 минут Всё настроил как надо) Надо еще правда поработать над оптимизацией, но в целом повысил фпс) |
Я бы сложил все объекты в массив и этот массив отсортировал. Функция сортировки должна помещать объект в массив так, чтобы соблюдалось правило: "чем объект левее на экране, тем он ближе к началу массива".
Соответственно, пробегая по массиву от начала к концу, мы будем перебирать объекты слева направо. Это удобно, особенно если запоминать самый левый и самый правый из видимых объектов (можно бегать не по всему массиву, а только от самого левого влево и от самого правого вправо для изменения видимости объектов). |
можно по всякому сделать, но ваш косяк в том, что вы в каждом кадре отправляете true/false
я бы, для увеличения производительности наверно бы использовал такой вариант (ну это сходу, уверен, что кто-то получше подскажет). У примеру завести второй двухмерный чисто числовой массив. В нём будут храниться координаты ваших объектов, а индекс соответствует номеру объекта. Ну и работаем чисто с этим массивом, т.е. меняем тут значения, будто это и есть координаты нашего объекта. Так вот, когда координаты попадают в зону видимости, ТО указываем координаты объекту с соответствующем индексом, передаём ему ссылку на индекс двумерного массива и и объявляем слушатель, который будет присваивать значения двумерного массива к координатам объекта. Вышел из поле зрения, убиваем слушатель, ставим false. Тут фокус в том, что вам не нужно двигать 200 объектов, вам нужно только следить, когда они должны появиться и тогда их выводить, так же уверен, что работа только с числами намного быстрее, особенно если использовать вектор, а не массив. А ещё создайте своего слушателя, который будет следить, когда объект выйдет из поля видимости и скроет его, дабы не заниматься каждый ход проверкой координат, пусть объект сам следит за собой А если ещё добавить что написано выше.. |
| Часовой пояс GMT +4, время: 00:01. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.