![]() |
Движение группы объектов. вопрос по оптимизации!
Столкнулся с проблемой - собственно тормозами... делаю проект, в котором на фоне падают монеты.
так вот: в среднем их одновременно на экране - около 20, ну плюс минус, но при этом возникают заметные глазу подтормаживания((( Собственно, я поискал советов по оптимизации, и парочку использовал... дело несколько улучшилось, но подвисания пока слишком заметны. эксперементальным путем установил, что они именно из-за этого элемента программы((( Реализую я все это дело следующим образом -есть функция droping(), отвечающая за выброс монет. и функция moving() отвечающая за их падения. первая вызывается с помощью setInterval с периодом = 350 - на практике показалось что он работает лучше таймера(вроде бы) ну а moving -из слушателя события enterFrame. вот. плюс положение и параметры монетки определяются с использованием math.random(), который вроде прожорливый, как говорят. выглядит все это следующим образом: Код AS3:
Вот. Вопрос - реально ли как-то реализовать обход 20-30ти объектов и их перемещение без чертовых тормозов? Собственно не так. Я видел, что реально... но КАК? Буду рад любому совету, спасибо) ps: fps= 24, имеет ли это значение вообще? |
Вы бы выложили swf-ку, может у вас там графика навороченная, которая все и тормозит. Код, на мой взгляд, тормозным не выглядит. Можно "оптимизировать" функцию moving так:
Код AS3:
|
А Вы монеты всегда новые создаёте?
|
Поддерживаю bav. Можно ещё массивы на векторы поменять.
И ещё смысл вот этого не совсем понятен: Код AS3:
|
Цитата:
------------------------- про вектор - спасибо ... надо попробовать) ------------------------------- монеты - да, всегда новые. когда падают ниже "плинтуса" - удаляю. |
На сколько мне известно, а это очень мало, то при анимации нужно исключать - создание объектов ( зачем их создавать во время анимации, если можно создать заранее и ещё было бы хорошо, если их не удалять, а использовать повторно), обращение к свойствам ( это x, y и прочее, если происходит в одном методе происходит много операций с координатой объекта, то лучше один раз её сохранить в локальной переменной ), обращениее через динамические скобки и потеря фокуса во время итераций. Больше я вроде не знаю.
|
а почему бы вам это через EnterFrame не сделать?
код действительно тормозным не выглядит. |
хмммм.... попробовал использовать вектор место массива.... в локальной версии работает... загружаю в контач (приложенька для контача планируется) - белый экран О.о
версия плейера - 10.3, выше не могу - ругаются используемые мной библиотеки. Добавлено через 2 минуты Цитата:
в каком смысле? moving и вызвается по enterframe-у. а дропать монетки можно и лучше реже - визуально разницы нет, а вроде как разгружается процессор ) |
почему бы монетке самой не падать, а достигая дна не переносится вверх и падать опять с новыми параметрами (скорости, размерами)? Это же просто дождик/снег с него многие начинали.
|
Вектор на двадцать объектов может и в обратную сказаться.. Плюсов он не даст.
|
| Часовой пояс GMT +4, время: 20:08. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.