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

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

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

Регистрация: Jul 2011
Сообщений: 169
По умолчанию Проблема с созданием и удалением обьектов

Я поставил FlashPreloadProfiler и из интереса решил поглядеть,что там у меня с быстродействием?
И заметил,что во вкладке MemoryProfiler,скапливаются экземпляры разнообразных классов,которые я вроде-бы обнуляю,и вот возник вопрос - как правильно обнулить экземпляры класса,чтобы они удалялись окончательно?
Просто у меня в этой же игре возникают тормоза и я думаю,что это,возможно из-за этого.
К примеру вот эта функция:
Код AS3:
	public class TimedAnimation 
	{
		private var mv:MovieClip;
		private var t:Timer;
		private var tf:int; // totalFrames
		private var f:Function;
		public function TimedAnimation(mv:MovieClip,f:Function,sf:int = 1, ef:int = 0 ) 
		{
			if (ef == 0) 
			{
				ef = mv.totalFrames;
			}
			this.tf = ef;
			this.mv = mv;
			this.f = f;
			t = new Timer(25)
			t.addEventListener(TimerEvent.TIMER, onTimerTick);
			t.start();
		}
 
		private function onTimerTick(e:TimerEvent):void 
		{
			mv.nextFrame();
			if (mv.currentFrame == tf) 
			{
				t.stop();
				t.removeEventListener(TimerEvent.TIMER, onTimerTick);
				f(mv);
				t = null;
				mv = null;
				f = null;
			}
		}
 
	}
Вызываемая таким образом:
Код AS3:
private var Animator:TimedAnimation;
Animator = new TimedAnimation(mv3, onAnimationComplete);
Создает утечку одного таймера и двух функций,хотя я,вроде бы,все обнуляю и,по возможности,удаляю.


Последний раз редактировалось windrunner31; 27.10.2011 в 23:00.
Старый 28.10.2011, 00:31
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 2  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
в аниматоре сделать destroy() { снятие слушателя с таймера, остановка таймера, удалить ссылку на мувик, удалить ссылку на функцию }

вызвать
Animator.destroy();
Animator = null;
__________________
Марк Tween

Старый 28.10.2011, 16:46
windrunner31 вне форума Посмотреть профиль Отправить личное сообщение для windrunner31 Найти все сообщения от windrunner31
  № 3  
Ответить с цитированием
windrunner31

Регистрация: Jul 2011
Сообщений: 169
В коде я также делаю,только без отдельного метода

Старый 28.10.2011, 17:28
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 4  
Ответить с цитированием
goodguy
Banned
[+1 05.11.11]
[+1 09.08.11]

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
Все правильно. Просто это не удаляет экземпляры сразу. Их удалит сборщик мусора, когда посчитает это нужным. Так что ничего удивительного, все работает как и должно

Старый 28.10.2011, 17:56
windrunner31 вне форума Посмотреть профиль Отправить личное сообщение для windrunner31 Найти все сообщения от windrunner31
  № 5  
Ответить с цитированием
windrunner31

Регистрация: Jul 2011
Сообщений: 169
Ага,спасибо.

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

Регистрация: Jun 2009
Адрес: Нерезиновая
Сообщений: 23
В дебажверсии можно руками вызвать сборщик и глянуть, что после этого останется.

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

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

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


 


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


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