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

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

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

блогер
Регистрация: Aug 2005
Адрес: www.artcraft.cz
Сообщений: 1,967
Записей в блоге: 6
Отправить сообщение для artcraft с помощью ICQ
По умолчанию GC не срабатывает

не удаляется экземпляр класса :~/
в чём причина?

так работает:
Код:
package {
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.TimerEvent;
	import flash.utils.Timer;

	public class Test extends Sprite {
		
		function Test():void {
			var a:Sprite = new Sprite();
			a.addEventListener(Event.ENTER_FRAME, efListner, false, 0, true);			
			addChild(a);removeChild(a);a=null;
			
			function efListner(e:Event):void {trace('Please delete me...');}
			
			forceGCRun();
		}
		
		
		private function forceGCRun():void{
			var a:Sprite;
			var count:uint;
			var oldCount:uint;
			var timer:Timer;
			
			a = new Sprite();
			a.addEventListener(Event.ENTER_FRAME, efListner, false, 0, true);			
			addChild(a);removeChild(a);a=null;
			function efListner(e:Event):void {count++;}

			timer = new Timer(1000);
			timer.addEventListener("timer", timerHandler, false, 0, true);
			timer.start();
			
			function timerHandler(e:TimerEvent):void {
				if(oldCount == count){
					 trace(':)', timer.currentCount);
					 timer.stop(); timer=null;
				}
				oldCount = count;
				for (var n:uint=0; n<10000; n++){
					a = new Sprite();	addChild(a);removeChild(a);a=null;
				}
			}
		}
				

	}
}

а так не работает:
Код:
package{	
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.TimerEvent;
	import flash.utils.Timer;
	
	public class Test extends Sprite{	
	
		function Test(){
			
			var c:c1 = new c1();
			addChild(c); removeChild(c);
			c=null;
			
			forceGCRun();
		}
		
		public function forceGCRun():void{
			var a:Sprite;
			var count:uint;
			var oldCount:uint;
			var timer:Timer;
			
			a = new Sprite();
			a.addEventListener(Event.ENTER_FRAME, efListner, false, 0, true);			
			addChild(a);removeChild(a);a=null;
			function efListner(e:Event):void {count++;}

			timer = new Timer(1000);
			timer.addEventListener("timer", timerHandler, false, 0, true);
			timer.start();
			
			function timerHandler(e:TimerEvent):void {
				if(oldCount == count){
					 trace('GC RUN :)', timer.currentCount);
					 timer.stop(); timer=null;
				}
				oldCount = count;
				for (var n:uint=0; n<10000; n++){
					a = new Sprite();	addChild(a);removeChild(a);a=null;
				}
			}
		}
	

	}
}

import flash.display.Sprite;
import flash.events.Event;

class c1 extends Sprite{
	function c1(){
		addEventListener(Event.ENTER_FRAME, function(e:Event):void{trace('c');},false,0,true);
	}
}
__________________
Хороший отдых - половина работы.

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

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

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


 


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


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