|
|
|||||
Регистрация: Apr 2009
Сообщений: 409
|
bitmapData работает через раз
Здравствуйте, в игре имеется карта состоящая из нескольких слоев: растровый фон (2500*2000 bitmap), и около 100 городов, которые для скорости работы анимаций фильтров пересчитываются в растр bitmap.draw(sprite).applyFilter(glow);
У 98% игроков карта рендерится за ~3 сек, но у остальных клиент подвисает на минуту или плюется ошибками, вот пример такой сессии (данные на входе тут у всех одинаковые) Выбивает в основном ошибку 1502 (скрипт дольше 15 сек), 1009 (null не имеет свойств) или 2015 (invalid bitmapData) При чем выбивает постоянно в разных местах В другой сессии у тех же игроков, иногда все грузится нормально. ТО есть закономерности отследить сложно. Пробовал поднимать лимит выполнения скрипта на 60 сек, но результат тот же. Свободной оперативной памяти при старте игры тоже нормально. В чем может быть проблема и как ее можно решить? Пока первое что приходит на ум - это считать битмапы городов порциями при enterFrame , по идее асинхронность должна решить 1502 ошибку. Но хз что с 2015 BitmapData(2500, 2000, true, 0); вроде в лимит это не упирается, тем более в других сессия работает норм. Последний раз редактировалось faraday; 08.02.2015 в 15:25. |
|
|||||
"Invalid BitmapData" обычно возникает, при попытке создания новго объекта BitmapData с нулевыми размерами по одной или двум осям. Может быть такое? Например, в момент вызова draw отображение города еще не полностью подгрузилось и имеет размеры 0x0.
__________________
...вселенская грусть |
|
|||||
Регистрация: Apr 2009
Сообщений: 409
|
Нет, в конструктор для границ стран передаются константы BitmapData(2500, 2000, true, 0);
А что касается размера городов. они берутся из библиотечных шейпов. так что если б были нулевые - размеры заметил. Добавлено через 48 часов 15 минут Invalid Bitmap скорее всего вознкиает из-за отсутсвия памяти. Хотя там всего то создаются 3 битмапы 2500*2000. С ошибкой 1502 - по-прежнему не понятно, почему у некоторых все отрисовывается за секунду, а у других висит по минуте. Поможет ли вынесение работы с битмапой в отдельный Woker? Стоит ли попробовать вариант с асснхронным циклом? мне он кажется бесполезным.. |
Часовой пояс GMT +4, время: 19:34. |
|
« Предыдущая тема | Следующая тема » |
|
|