Просмотр полной версии : Частичная перерисовка bitmapData
relevance4
07.05.2013, 00:37
Привет!
Есть 10000 мувиков, часть из них статичны, остальные перемещаются. те, которые перемещаются с незаметной глазу скоростью назовём спящими.
мувики - картинки 6х6 пикселей. размер видимой части 800х600 и все мувики находятся в ней.
хочу распихать это дело по битмапам и перерисовывать только те мувики, которые изменили своё положение с момента последней отрисовки.
как "дешевле" это сделать?
есть мысль, что нужно переместившийся мувик вырезать и вставить на новую позицию в битмамдате, но не могу придумать, как оптимальнее это сделать с пятью тысячами мувиков.
1. зачем вообще "мувики", если они — "картинки" и на выходе — битмап?
2. да строго говоря, никак не вырезать. Под ним же может быть другой мувик отрисован, то есть вырезаемый будет не полностью на прозрачном фоне. Так что статичные сразу отрисовываем на битмапдату и храним ее, а всех беспокойных каждый шаг отрисовываем либо на новую прозрачную поверх фона, либо на новую копию фона.
relevance4
07.05.2013, 13:01
1. ну ведь наверняка показывать один битмап дешевле, чем десять тысяч.
2. тем мувиком, который "под ним" можно пренебречь, а можно перерисовать - на данном этапе это не важно. важнее разобраться, как картинку каждый раз перерисовывать без вызовов new bitmap, new bitmapdata, и похоже, без draw.
просто соль в том, что все 10000 мувиков интегрируются по Верле и проц уже достаточно загружен а с помощью "умного рендера" хочется разгрузить его в отношении графики.
как картинку каждый раз перерисовывать без вызовов new bitmap, new bitmapdata, и похоже, без drawЯ вроде ответил в первом пункте. Зачем нужны мувики, если нужны картинки? Странный же вопрос, правда? Зачем Вам тяжелый отображаемый класс, который Вы не собираетесь отображать? Оперируйте битмапдатами "картинок" и все. Используйте быстрый copyPixels() из этих битмапдат в отображаемую. И не надо никаких 10000 создавать каждый раз или отрисовывать мувиклипы методом draw(). У Вас уже есть все битмапдаты, зачем их каждый раз перерисовывать?
Тем более, что, наверняка, типов "мувиков" гораздо меньше чем 10000, а то и вовсе 1.
relevance4
07.05.2013, 18:30
13300 мувиков.
copyPixels отлично справился
Добавлено через 45 часов 54 минуты
вот результат http://www.flasher.ru/forum/showthread.php?t=198927
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.