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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 19.08.2009, 20:12
dark256 вне форума Посмотреть профиль Отправить личное сообщение для dark256 Посетить домашнюю страницу dark256 Найти все сообщения от dark256
  № 1  
Ответить с цитированием
dark256
 
Аватар для dark256

блогер
Регистрация: Apr 2008
Адрес: SPb
Сообщений: 3,718
Записей в блоге: 5
Отправить сообщение для dark256 с помощью ICQ Отправить сообщение для dark256 с помощью Skype™
По умолчанию Быстрый скролл контента клипа

Собсссно: имеем большущую карту местности для игрухи.
Куча аттачнутых одинаковых клеток, в которые загружаются пнг - поверхности, и всякие векторные домики и прочее.
Карта в экран ессно не влазит, поэтому стрелочками ее туда сюда скроллируем. Поскольку карта изрядна - 40 на 40 клеток 180 на 150 пикселей, то притормаживает.

Изначально сделал так:
Код AS1/AS2:
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...
             }
}
При наведении на соотв стрелочку-кнопку по onEnterFrame делаем mark._x +=10
и аналогично для остальных трех направлений
Покрутил. Тормозит. Сказал что mark.cacheAsBitmap именно true
Покрутил. Тормозит. Ругнулся. Полез на форум. В результате набрел на вот такое вот:

Код AS1/AS2:
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
}
далее в mark.container аттачим и подгружаем все как и ранее.

На координатные кнопки повесил в ЭнтерФрэйме _root.mark.content._x += 10
Покрутил. Тормозит. Раскомментил строчку за кэширование как битмап.
Покрутил. Тормозит. Собссно вопрос - это в морг или я с этим scrollRect недоразобрался?


Последний раз редактировалось dark256; 20.08.2009 в 10:51.
Старый 19.08.2009, 23:34
rainbowrussia вне форума Посмотреть профиль Отправить личное сообщение для rainbowrussia Найти все сообщения от rainbowrussia
  № 2  
Ответить с цитированием
rainbowrussia
 
Аватар для rainbowrussia

Регистрация: Feb 2008
Сообщений: 560
Я так думаю что картинки за пределами видимости необходимо скрывать и не скроллить.

Старый 20.08.2009, 00:43
dark256 вне форума Посмотреть профиль Отправить личное сообщение для dark256 Посетить домашнюю страницу dark256 Найти все сообщения от dark256
  № 3  
Ответить с цитированием
dark256
 
Аватар для dark256

блогер
Регистрация: Apr 2008
Адрес: SPb
Сообщений: 3,718
Записей в блоге: 5
Отправить сообщение для dark256 с помощью ICQ Отправить сообщение для dark256 с помощью Skype™
Цитата:
Сообщение от rainbowrussia Посмотреть сообщение
Я так думаю что картинки за пределами видимости необходимо скрывать и не скроллить.
Ну вообще-то видна ТОЛЬКО область внутри window. То есть физиологический размер карты условно говоря 4000 на 4000, а видимая область в контенте 600 на 600.
Хотите сказать что тем клеткам, которые вне вьюпорта следует писать _visible = false?

Ну это я попробую, просто удивился - приведенный мною код так густо разрекламирован как панацея, и столь сильно рекомендован, что я подумал - щас все проблемы решатся. Ан нет. Соотвтественно я вот усомнился в правильности применения данного кода к моему случаю. Собственно ни разу подобные конструктивы не использовал, вот и думаю - не упустил ли я какие-то подводные камни. Вот

Старый 20.08.2009, 08:22
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 4  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Цитата:
Сказал что mark.cacheAsBitmap именно true
Покрутил. Тормозит. Ругнулся.
Цитата:
То есть физиологический размер карты условно говоря 4000 на 4000,
Код:
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).
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 20.08.2009, 10:47
dark256 вне форума Посмотреть профиль Отправить личное сообщение для dark256 Посетить домашнюю страницу dark256 Найти все сообщения от dark256
  № 5  
Ответить с цитированием
dark256
 
Аватар для dark256

блогер
Регистрация: Apr 2008
Адрес: SPb
Сообщений: 3,718
Записей в блоге: 5
Отправить сообщение для dark256 с помощью ICQ Отправить сообщение для dark256 с помощью Skype™
Да.... но: у меня не единичный битмап 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.
Старый 20.08.2009, 15:08
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 6  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Неправильно понял. Кеш в битмап не применяется, если клип больше 2880, и клип рендерится как обычно, вектором.
__________________
Reality.getBounds(this);

Старый 20.08.2009, 15:24
dark256 вне форума Посмотреть профиль Отправить личное сообщение для dark256 Посетить домашнюю страницу dark256 Найти все сообщения от dark256
  № 7  
Ответить с цитированием
dark256
 
Аватар для dark256

блогер
Регистрация: Apr 2008
Адрес: SPb
Сообщений: 3,718
Записей в блоге: 5
Отправить сообщение для dark256 с помощью ICQ Отправить сообщение для dark256 с помощью Skype™
Спасибо!... печально.... значит тупо сляпать эту шнягу не получится.... грусть тоска.... эх....

Старый 20.08.2009, 17:17
aFriend вне форума Посмотреть профиль Отправить личное сообщение для aFriend Найти все сообщения от aFriend
  № 8  
Ответить с цитированием
aFriend
 
Аватар для aFriend

Регистрация: Jan 2009
Сообщений: 55
Цитата:
Сообщение от Wolsh Посмотреть сообщение
Кеш в битмап не применяется, если клип больше 2880.
А разве может быть больше?
Мне вот например нужно создать stage на 3500 - но не даёт, однако!
Или можно обойти это ограничение?

Старый 20.08.2009, 15:40
incorp вне форума Посмотреть профиль Отправить личное сообщение для incorp Найти все сообщения от incorp
  № 9  
Ответить с цитированием
incorp

Регистрация: Nov 2008
Адрес: Москва
Сообщений: 92
мне кажется может прокатить если порезать большую локацию на несколько "комнат". тобишь быстрый скрол в пределах одной комнаты и подгрузка при переходе. скорее всего по другому и не выйдет.

Старый 20.08.2009, 17:47
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 10  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Клип и Stage не одно и то же.
__________________
Reality.getBounds(this);

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

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

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


 


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


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