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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 09.03.2009, 17:09
EvilCoder вне форума Посмотреть профиль Отправить личное сообщение для EvilCoder Найти все сообщения от EvilCoder
  № 1  
Ответить с цитированием
EvilCoder

Регистрация: Dec 2008
Сообщений: 15
По умолчанию Оптимизация скорости при перемещении мувиклипа

Может быть раздел для темы выбран не совсем правильно, но раз уж перемещение программное, пусть пока здесь будет.
Данный вопрос на форуме уже поднимался, но мне кажется, освещен был не до конца.

Перемещаю по сцене картинку с фоном(разрешение примерно 7000х1200), все было нормально, пока на сцене поверх этой картинки не расположил другие мувиклипы, после этого загрузка проца поднялась до 100%, а фпс клипа упало до 20 (выставленное фпс - 30). Сначала думал, что дело в размере картинки, уменьшил до размеров отображаемой области - ничего не изменилось. Выяснилось что дело в свойстве Allow Smoothing, убрал его, фпс выросло, загрузка проца - 20%. Но фон начал двигаться прерывисто(фон в один кадр может двигаться меньше чем на 1 пиксель, избежать этого очень трудно, т.к. скорость движения может меняться). Ко всему, если фон двигается очень быстро, то картинка как-бы рассыпается(как будто какая-то часть картинки движется быстрее других и получается некое смещение), проверено на быстрых и медленных компьютерах, на более быстрых эффект проявляется не так сильно. Тут уже не помогает ни Allow Smoothing ни cacheAsBitmap.

Есть ли какие-нибудь способы, методы, при программировании платформеров чтобы избежать подобных проблем, при этом сохраняя производительность? Заранее спасибо.

Старый 09.03.2009, 18:07
litebox вне форума Посмотреть профиль Отправить личное сообщение для litebox Найти все сообщения от litebox
  № 2  
Ответить с цитированием
litebox
 
Аватар для litebox

Регистрация: Jul 2008
Адрес: Украина, Киев
Сообщений: 253
Цитата:
если фон двигается очень быстро, то картинка как-бы рассыпается
Скорее всего, это уже особенности человеческого глаза... возможно если делать блюр при быстром перемещении, такой эффект уменьшится... вместе с fsp конечно ))
Цитата:
фон в один кадр может двигаться меньше чем на 1 пиксель
- перерисовка больших участков требует больших производительных затрат - уж проще сделать так, чтобы изображения двигались именно дискретно (округлять смещения до целого)

Старый 09.03.2009, 18:25
EvilCoder вне форума Посмотреть профиль Отправить личное сообщение для EvilCoder Найти все сообщения от EvilCoder
  № 3  
Ответить с цитированием
EvilCoder

Регистрация: Dec 2008
Сообщений: 15
Цитата:
Скорее всего, это уже особенности человеческого глаза... возможно если делать блюр при быстром перемещении, такой эффект уменьшится... вместе с fsp конечно ))
Как бы мне хотелось, чтоб это были особенности человеческого глаза Но, увы, такой эфеект замечали все, даже люди не посвященные в программирование и всем видно, что "так не должно быть". Вот, к примеру игра, в которой картинка не "рассыпается", причем судя по всему, картинка не маленькая и движется быстро.
http://www.gamesheep.com/game/moon-buggy/

Цитата:
перерисовка больших участков требует больших производительных затрат - уж проще сделать так, чтобы изображения двигались именно дискретно (округлять смещения до целого)
Сделать так, наверное проще, но не допустимо, потому что фон может двигаться очень медленно, а разница в скорости 1 пиксель и 2 ощутимо выглядит, не обойтись без промежуточных значений. В вышеупомянутой игре изображение тоже двигается небольшими рывками при маленькой скорости. Наверное и мне придется смириться ))

Старый 09.03.2009, 19:01
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 4  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Не двигать такую большую картинку - таких широких мониторов не бывает перерисовывать только видимую часть.
ЗЫ, я так понимаю, картинка все равно много весит - тогда, еще вариант, вообще, отрендерить движение в видео и прокручивать видео... тогда вообще совсем гладко получится.
__________________
Hell is the possibility of sanity


Последний раз редактировалось wvxvw; 09.03.2009 в 19:46.
Старый 09.03.2009, 19:14
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 5  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от EvilCoder Посмотреть сообщение
Вот, к примеру игра, в которой картинка не "рассыпается", причем судя по всему, картинка не маленькая и движется быстро.[/url]
Да нет, она тоже дискретно движется. Просто в силу небольшого вьюпорта, картинка не бьется.

Старый 09.03.2009, 22:31
Dimonte вне форума Посмотреть профиль Отправить личное сообщение для Dimonte Найти все сообщения от Dimonte
  № 6  
Ответить с цитированием
Dimonte

Регистрация: Jun 2008
Сообщений: 51
Самый простой способ - отрендерить картинку в BitmapData, потом методом copyPixels помещать в основной вид только нужную часть. Единственное, при размере в 7000х1200 использование памяти будет бешеное.

Старый 09.03.2009, 23:48
iflamberg вне форума Посмотреть профиль Отправить личное сообщение для iflamberg Найти все сообщения от iflamberg
  № 7  
Ответить с цитированием
iflamberg
 
Аватар для iflamberg

Регистрация: Jan 2009
Сообщений: 1,651
2wvxvw:
Цитата:
ЗЫ, я так понимаю, картинка все равно много весит - тогда, еще вариант, вообще, отрендерить движение в видео и прокручивать видео... тогда вообще совсем гладко получится.
по-моему это нерально. Там в видео ты же не по кадрам переходишь, а по времени, а если быть еще точнее по контрольным точкам. Точно на несколько кадров видео промотать невозможно.

Старый 10.03.2009, 01:25
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 8  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
flv - не единственный формат, можно и в FlashVideo по объему - практически одно и то же получиться. Ну и спокойно эмбедиться и покадрово перематывается.
__________________
Hell is the possibility of sanity

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

Регистрация: Jun 2008
Сообщений: 51
wvxvw,если я правильно понял, автор темы делает игру-платформер, а размер в 7000х1200 говорит нам о том, что перемещаться фон должен не только по горизонтали, но еще и по вертикали. Если же сделать видео с перемещением, допустим, по горизонтали, высотой в 1200 пикселей, а потом его двигать по вертикали, чтобы нужное место отображалось - то это будет страшно и по памяти, и по процессору.

Старый 10.03.2009, 12:13
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 10  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
А ну тогда - да, с видео не получится... не подумал
Ну еще, как вариант - разбить картинку на много маленьких, сначала рассчитывать, какие из них видны, и потом аттачить / отрисовывать только то, что видно.
__________________
Hell is the possibility of sanity

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

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

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


 


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


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