![]() |
|
||||||||||
|
|
|
|||||
|
Собсссно: имеем большущую карту местности для игрухи.
Куча аттачнутых одинаковых клеток, в которые загружаются пнг - поверхности, и всякие векторные домики и прочее. Карта в экран ессно не влазит, поэтому стрелочками ее туда сюда скроллируем. Поскольку карта изрядна - 40 на 40 клеток 180 на 150 пикселей, то притормаживает. Изначально сделал так: var mark = _root.createEmptyMovieClip("mark",1000) // Поверхность for (var i=0; i<40; i++) { for (var j=0; j<40; j++) { var sota = mark.attachMovie("SOTA","SOTA"+sotCounter,mark.getNextHighestDepth()) loadmovie(file, sota.surface) sota.pad rollover rollout etc... } } и аналогично для остальных трех направлений Покрутил. Тормозит. Сказал что mark.cacheAsBitmap именно true Покрутил. Тормозит. Ругнулся. Полез на форум. В результате набрел на вот такое вот: var mark:MovieClip = setUpContainer() var window:Rectangle = new Rectangle(0, 0, Stage.width, Stage.height); mark.scrollRect = window function setUpContainer():MovieClip { var mc:MovieClip = _root.createEmptyMovieClip("mark",1000) var content:MovieClip = mc.createEmptyMovieClip("content", 100) //content.cacheAsBitmap = true return mc } На координатные кнопки повесил в ЭнтерФрэйме _root.mark.content._x += 10 Покрутил. Тормозит. Раскомментил строчку за кэширование как битмап. Покрутил. Тормозит. Собссно вопрос - это в морг или я с этим scrollRect недоразобрался? Последний раз редактировалось dark256; 20.08.2009 в 10:51. |
|
|||||
|
Регистрация: Feb 2008
Сообщений: 560
|
Я так думаю что картинки за пределами видимости необходимо скрывать и не скроллить.
|
|
|||||
|
Цитата:
Хотите сказать что тем клеткам, которые вне вьюпорта следует писать _visible = false? Ну это я попробую, просто удивился - приведенный мною код так густо разрекламирован как панацея, и столь сильно рекомендован, что я подумал - щас все проблемы решатся. Ан нет. Соотвтественно я вот усомнился в правильности применения данного кода к моему случаю. Собственно ни разу подобные конструктивы не использовал, вот и думаю - не упустил ли я какие-то подводные камни. Вот ![]() |
|
|||||
|
.
|
Цитата:
Цитата:
In the following cases a movie clip does not use a bitmap even if the cacheAsBitmap property is set to true, and instead renders the movie clip from vector data: - The bitmap is too large: greater than 2880 pixels in either direction. - The bitmap fails to allocate memory (due to an out of memory error). |
|
|||||
|
Да.... но: у меня не единичный битмап 2880х, а клип, собранный из битмапов 170 на 140....
Из приведенного текста я понял что именно из-за крупных битмапов a movie clip does not use a bitmap even if the cacheAsBitmap property is set to true Последний раз редактировалось dark256; 20.08.2009 в 10:49. |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Неправильно понял. Кеш в битмап не применяется, если клип больше 2880, и клип рендерится как обычно, вектором.
__________________
Reality.getBounds(this); |
|
|||||
|
Регистрация: Jan 2009
Сообщений: 55
|
А разве может быть больше?
Мне вот например нужно создать stage на 3500 - но не даёт, однако! ![]() Или можно обойти это ограничение? |
|
|||||
|
Регистрация: Nov 2008
Адрес: Москва
Сообщений: 92
|
мне кажется может прокатить если порезать большую локацию на несколько "комнат". тобишь быстрый скрол в пределах одной комнаты и подгрузка при переходе. скорее всего по другому и не выйдет.
|
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Клип и Stage не одно и то же.
__________________
Reality.getBounds(this); |
![]() |
![]() |
Часовой пояс GMT +4, время: 19:58. |
|
|
« Предыдущая тема | Следующая тема » |
|
|