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

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

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

Регистрация: Jan 2008
Сообщений: 221
По умолчанию Memory Management

Есть флешка которая грузит в себя as2 банеры, спустя какое то время банер удаляется и грузится новый. Проблема в том, что с каждой загрузкой
банера флеш плеер потребляет больше памяти. Как с этим бороться?
а точнее как очистить память от неиспользуемых объектов ?
код:

Код AS3:
package {
		import br.com.stimuli.loading.*;
		import br.com.stimuli.loading.loadingtypes.*;
		import flash.display.*;
		import flash.events.*;
		import flash.text.*;
		import flash.utils.Timer;
		import utils.MemoryController;
 
	public class BanerChanger extends Sprite
	{
		private var loader: BulkLoader;
		private var xmlLoader:BulkLoader = new BulkLoader("XmlLoader");
	//	private var xmlUrl:String = "cfg.xml";
		private var xmlUrl:String;
		private var theXML: XML;
		private var banerSrcArr:Array = new Array();
		private var timersArr:Array = new Array();
		private var totalNum:Number;
		private var index:Number = 0;
		private var currentAVM:AVM1Movie;
		private var mMemoryController:MemoryController;
		private var frameRateArr:Array = new Array();
 
		public function BanerChanger()
		{	
		    super();
		    xmlUrl = this.loaderInfo.parameters.xml_url;
			xmlLoader.add(xmlUrl);
			mMemoryController = new MemoryController();
			xmlLoader.start();
			xmlLoader.addEventListener(BulkProgressEvent.COMPLETE, completeXmlHnd);
 
		}		
		/**************************************************************************
 		*  @private 
 		*  Обработка загрузки ХМЛ
 		****************************************************************************/	
 		private function completeXmlHnd(evt: BulkProgressEvent) : void
		{
			theXML = xmlLoader.getXML(xmlUrl);
			totalNum = theXML.file.length();
 
			var t:Number;
 
		 	 for each (var banerUrl:XML in theXML.file) 
			 {                 
                   banerSrcArr.push(new String(banerUrl));
                   t=banerUrl.@time;
                   timersArr.push(t*1000);
                   frameRateArr.push(banerUrl.@speed);                 
             }
 
             Load(0);
 
		}
 
		/**************************************************************************
 		*  @private 
 		*  
 		****************************************************************************/	
        private function Load(inx:Number ) : void
		{   loader = new BulkLoader("test");
			loader.add(banerSrcArr[inx]);
			loader.addEventListener(BulkLoader.COMPLETE, onComplete);
			loader.start();
		}
		 /**************************************************************************
 		*  @private 
 		*  
 		****************************************************************************/
		private function onComplete(evt : BulkProgressEvent) : void
		{   
			currentAVM = loader.getAVM1Movie(banerSrcArr[index], true);
			stage.frameRate = frameRateArr[index];
			bord.addChildAt(currentAVM,0);
			var theTimer:Timer = new Timer(timersArr[index], 1);
			theTimer.addEventListener(TimerEvent.TIMER, timerHnd);
			theTimer.start();
 
		}
		 /**************************************************************************
 		*  @private 
 		*  
 		****************************************************************************/
		private function timerHnd(evt:Event):void
		{		
			bord.removeChild(currentAVM);
			currentAVM = null;
			if(index<=totalNum-2){
			index++;
			}else
			{
			  index=0; 	
			}
			loader.clear();
			loader.removeAll();
			loader = null;
			Load(index);
		}    
	}
}
2. на скриншотах дестени и в альтернативе видел приблуду которая показывает фпс и видимо график используемой памяти. что это такое и как её надыбыть?

3. кто какие приёмы и классы использует для управления памятью ?

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

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

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


 


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


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