Показать сообщение отдельно
Старый 17.05.2012, 00:51
kaetano вне форума Посмотреть профиль Отправить личное сообщение для kaetano Найти все сообщения от kaetano
  № 3  
Ответить с цитированием
kaetano
 
Аватар для kaetano

Регистрация: May 2009
Сообщений: 134
попробую привести код. подгружаемую swf подправила немного сама - с ней не надо уже разбираться.

и в общем задача теперь такая - надо найти утечку ресурсов. перед показом анимашек - загрузка цп - 10-15%, во время анимации вырастает до 65 (там не простая картинка), а после удаления ее - падает до 40. Хочется падения до исходного.

прошу посмотреть критически на код и помочь (особенно настораживает момент с удалением объекта с использованием ссылки target - можно ли таким образом удалять?). заранее всем спасибо!!!!!

Код AS3:
//функция в основном классе проекта. тут создается экземпляр класса PagePicture (который содержит)
//подгружаемый swf
......
//это вспомогательная переменная
private var target:DisplayObject;
......
private function onPicture():void {	
	_arrPic = _arrStep[_curStep].arrAction[_curAction].arrAct[_curAct].picture.arrPics;
	for (var i:int = 0; i < _arrPic.length; i++) 
	{
		var item:DPic = _arrPic[i];
		//создаем экземпляр
		var pPic:PagePicture = new PagePicture(_picW, _picH,
									item.descrPic.Name,
									item.descrPic.Text,
									item.picTime * _koefSpeed,
									_picX, _picY,
									item.picScale);
		pPic.name = "pPic";
		sprMain.addChild(pPic);
 
		//ждем исчезновения
		pPic.addEventListener(PageAppearOb.END_DISAPPEAR, onEndDisapPic);
	}
 
 
}
//конец картинке
private function onEndDisapPic(event:Event):void {	
	event.target.removeEventListener(PageAppearOb.END_DISAPPEAR, onEndDisapPic);
	if (event.target is PagePicture) {
		(event.target as PagePicture).deactivate();
	}
	deleteOb("pPic");
}
 
//тут же в основном классе ф-я для уничтожения ненужных объектов
private function deleteOb(nameOb:String = "NoName"):void {
	target = null;
	target = sprMain.getChildByName(nameOb); 
	if (target) {
		sprMain.removeChild(target);
	target = null;
	}
}
**************************************************************************************		
//и сам класс PagePicture
package {
	public class PagePicture extends PageAppearOb {
		public static const CLOSE_PIC: String = "CLOSE_PIC";
 
		private var rectMask:Shape;							//маска для рамки
		private var loader:Loader;
		private var loaderContent:DisplayObject;
 
 
		override public function PagePicture(picW	:int 		= 100,
								picH	:int 		= 200,
								picName	:String 	= "",
								picTitle:String 	= "",
								picTime	:int 		= 0,
								picX	:int 		= -1,
								picY	:int 		= -1,
								picScale:Number 	= 1,
								blockButtonTime:int = 0) {
			//тут было сохранение параметров...... 
			super();
 
			//загружаем картинку
			loader = new Loader();
			loader.contentLoaderInfo.addEventListener(Event.INIT, initListener);
			var urlRequest:URLRequest = new URLRequest(picName)
			loader.load(urlRequest);
		}
 
		private function initListener(event:Event):void {
			event.target.removeEventListener(Event.INIT, initListener);
			loaderContent 		= loader.content;
			addEventListener(PageAppearOb.END_APPEAR, onEndAppear);
		}
 
		//показываем картинку
		private function onEndAppear(event:Event):void {
			removeEventListener(PageAppearOb.END_APPEAR, onEndAppear);
			if (loaderContent) spr.addChild(loaderContent);
			loaderContent.mask = rect;
		}
 
		public function deactivate():void {
			removeEventListener(PageAppearOb.END_APPEAR, onEndAppear);
			removeEventListener(PageAppearOb.END_DISAPPEAR, onEndDisappear);
			removeEventListener(MouseEvent.CLICK, mouseClickListener);
			if (loader) {
				loader.unload();
				loader = null;
				loaderContent = null;
			}
		}
Добавлено через 64 часа 4 минуты
НАРОД!!!! Очень прошу ответить!

Нормально ли это что после выгрузки внешних анимашек процессор загружен на 40% и не думает выгружаться?

Очень жду помощи!!!!!!

Извиняюсь за поднятие темы


Последний раз редактировалось kaetano; 17.05.2012 в 01:00.