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

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

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

Регистрация: Apr 2011
Сообщений: 13
По умолчанию Объекты останавливаются на сцене

Доброго времени суток. У меня вот какой вопрос : добавляются объекты на сцену, объекты двигаются, в разных направлениях, а потом некоторые останавливатся, а некоторые двигаются или все останавливаются. Движение объектов по средством Event.ENTER_FRAME (через Timer мне не подходит). Код большой, приводить не буду, хочу узнать - может у кого есть какие соображения (может кто сталкивался с подобным) в каком направлении работать???

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

Регистрация: Jan 2009
Адрес: Петерсбург
Сообщений: 1,882
В чем вопрос заключается?

Старый 04.06.2011, 15:41
ndez вне форума Посмотреть профиль Отправить личное сообщение для ndez Найти все сообщения от ndez
  № 3  
Ответить с цитированием
ndez

Регистрация: Apr 2011
Сообщений: 13
Почему останавливаются объекты??? Такое впечатление, что Event.ENTER_FRAME для остановившихся объектов больше не доступен.


Последний раз редактировалось ndez; 04.06.2011 в 15:43.
Старый 06.06.2011, 05:21
andrew911 вне форума Посмотреть профиль Отправить личное сообщение для andrew911 Найти все сообщения от andrew911
  № 4  
Ответить с цитированием
andrew911

Регистрация: Mar 2007
Сообщений: 545
Цитата:
Сообщение от ndez Посмотреть сообщение
Почему останавливаются объекты??? Такое впечатление, что Event.ENTER_FRAME для остановившихся объектов больше не доступен.
Это объекты недоступны становятся, вы нигде не сохраняете на них ссылку и их подчищает garbage collector

Код AS3:
private function botsTimer_timer(e:TimerEvent):void 
{
	bot = new Bot(main);
	if (Bot.botLoad == 10)
	{
		bTimer.stop();
	}
}
Заносите их например в массив

Код AS3:
private var bots:Array = [];
...
 
bot = new Bot(main);
bots.push(bot);
Ну и советую обрабатывать всех ботов в одном ENTER_FRAME, а не плодить его для каждого бота.

Старый 04.06.2011, 15:44
Bgg вне форума Посмотреть профиль Отправить личное сообщение для Bgg Найти все сообщения от Bgg
  № 5  
Ответить с цитированием
Bgg
 
Аватар для Bgg

Регистрация: Jan 2009
Адрес: Петерсбург
Сообщений: 1,882
Потому что где-то косяк в вашем коде.

Старый 04.06.2011, 15:53
ndez вне форума Посмотреть профиль Отправить личное сообщение для ndez Найти все сообщения от ndez
  № 6  
Ответить с цитированием
ndez

Регистрация: Apr 2011
Сообщений: 13
Логично. Я пишу игруху. На сцену добовляю ботов - порядка 10 - двигаются - потом остановились. За это время я не каких действий не произвожу. Время остановки спонтанное (примерно через минуту - две). Дальше полет пуль- вроде летят, но иногда застывает на месте, может через минуту, может через пять такое произойти, а может и не произойти. При этом дальше стреляет и другие пули летят и умирают потом как положено. Попробую пример коротенький сделать.

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

Регистрация: Jan 2009
Адрес: Петерсбург
Сообщений: 1,882
Оч классно. Но без кода хз как вам помочь.

Старый 06.06.2011, 04:35
ndez вне форума Посмотреть профиль Отправить личное сообщение для ndez Найти все сообщения от ndez
  № 8  
Ответить с цитированием
ndez

Регистрация: Apr 2011
Сообщений: 13
Вот такой код подсократил, для примера, здесь объекты останавливаются через 1-7 минут. Обычно через 4-5 минут.
Вложения
Тип файла: rar zxc - копия (2).rar (24.5 Кб, 48 просмотров)

Старый 06.06.2011, 06:02
ndez вне форума Посмотреть профиль Отправить личное сообщение для ndez Найти все сообщения от ndez
  № 9  
Ответить с цитированием
ndez

Регистрация: Apr 2011
Сообщений: 13
Это первая моя игрушка, много чего не знаю. Это пример, реально ботов много видов и появляются они спонтанно. И количество их больше 10. Десять - я ограничил, что бы одновременно были на сцене, но при этом таймер не останавливается, а просто не появляются на сцене новые боты. Как только становится меньше - снова появляются. Но стоит оставить без движения и поражения ботов игрушку(а иногда и в процессе игры) - останавливаются боты.

Опять же если убрать классы пуль и оставить в данном примере только летающие боты - то в течении 10 минут они точно не останавливаются(дальше ждать не стал). Или в данном случае garbage collector просто не срабатывает???

Попробую массив, ботов конечное число, а вот как быть с пулями??? В данном примере нормально летают, а в реальном пули ботов и пули героя порой также зависают. И эти объекты доступны - об зависшие пули взрываются боты или уменьшается жизнь героя. И они удаляются со сцены когда значение контенер.numChild-1 соответствует данному объекту, но на это требуется время и соответственно появление новых пуль.

И еще хотел спросить - в процессе игры загрузка ЦП составляет примерно 20-30%(увеличивается постепенно) - мне кажется это много???


Последний раз редактировалось ndez; 06.06.2011 в 06:24.
Старый 06.06.2011, 15:10
andrew911 вне форума Посмотреть профиль Отправить личное сообщение для andrew911 Найти все сообщения от andrew911
  № 10  
Ответить с цитированием
andrew911

Регистрация: Mar 2007
Сообщений: 545
Цитата:
Сообщение от ndez Посмотреть сообщение
Это первая моя игрушка, много чего не знаю. Это пример, реально ботов много видов и появляются они спонтанно. И количество их больше 10. Десять - я ограничил, что бы одновременно были на сцене, но при этом таймер не останавливается, а просто не появляются на сцене новые боты. Как только становится меньше - снова появляются. Но стоит оставить без движения и поражения ботов игрушку(а иногда и в процессе игры) - останавливаются боты.

Опять же если убрать классы пуль и оставить в данном примере только летающие боты - то в течении 10 минут они точно не останавливаются(дальше ждать не стал). Или в данном случае garbage collector просто не срабатывает???
Да, он срабатывает при определенных условиях. Несколько ботов занимают немного памяти, а постоянное создание пуль приводит к росту занятой памяти.

Цитата:
Сообщение от ndez Посмотреть сообщение
Попробую массив, ботов конечное число, а вот как быть с пулями??? В данном примере нормально летают, а в реальном пули ботов и пули героя порой также зависают. И эти объекты доступны - об зависшие пули взрываются боты или уменьшается жизнь героя. И они удаляются со сцены когда значение контенер.numChild-1 соответствует данному объекту, но на это требуется время и соответственно появление новых пуль.

И еще хотел спросить - в процессе игры загрузка ЦП составляет примерно 20-30%(увеличивается постепенно) - мне кажется это много???
Как уже написали используйте "кэш менеджер для создания объектов" (object pool), при этом объекты достаются из кэша, отрабатывают и отправляются обратно в кэш, при этом нет постоянного роста памяти.

Загрузка зависит от характеристик ЦП.
Для начала, как я уже писал, вынесите все обработки Event.ENTER_FRAME из ботов и пуль, например, в общий менеджер объектов.

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

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

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


 


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


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