Показать сообщение отдельно
Старый 16.01.2013, 13:03
Волгоградец вне форума Посмотреть профиль Отправить личное сообщение для Волгоградец Найти все сообщения от Волгоградец
  № 5  
Ответить с цитированием
Волгоградец
 
Аватар для Волгоградец

блогер
Регистрация: Sep 2007
Адрес: Гамбург
Сообщений: 1,648
Записей в блоге: 12
Wolsh, не понял. Если срабатывает ГЦ, то он именно удаляет объекты. Вот еще пример.

Код AS3:
package {
 
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.system.System;
 
	public class GCTest extends Sprite {
 
		public function GCTest() {
			stage.addEventListener(MouseEvent.CLICK, stageMouseClickHandler);
		}
 
		private function stageMouseClickHandler(event:MouseEvent):void {
			var a:A = new A();
			addChild(a.s);
 
			var s:Sprite = new Sprite();
			addChild(s);
			s.addEventListener(Event.ENTER_FRAME, test, false, 0, true);
		}
 
		private function test(event:Event):void {
			trace('inside main');
			System.gc();
		}
	}
}
 
import flash.display.Sprite;
import flash.events.Event;
import flash.system.System;
 
internal class A {
 
	public var s:Sprite = new Sprite();
 
	function A() {
		s.addEventListener(Event.ENTER_FRAME, enterFrameHandler, false, 0, true);
		s.graphics.beginFill(0x00FF00);
		s.graphics.drawCircle(0, 0, 50);
		s.graphics.endFill();
	}
 
	private function enterFrameHandler(event:Event):void {
		trace('inside A');
		System.gc();
	}
}
Тут еще интересней. s, что внутри A удалится сразу же, хотя он в дисплей листе. s, что внутри Main будет работать бесконечно долго. В чем разница между ними?