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

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

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

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

Привет. Заголовок немного желтоват. На самом деле код выглядит так:

Код AS3:
package {
 
	import flash.display.Sprite;
	import flash.events.MouseEvent;
 
	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.vis);
		}
	}
}
 
import flash.display.Shape;
import flash.display.Sprite;
import flash.events.Event;
import flash.system.System;
 
internal class A {
 
	public var vis:Sprite = new Sprite();
 
	private const _SHAPE:Shape = new Shape();
 
	function A() {
		vis.graphics.beginFill(0xFF0000);
		vis.graphics.drawCircle(0, 0, 50);
		vis.graphics.endFill();
 
		_SHAPE.addEventListener(Event.ENTER_FRAME, entarFrameHandler);
	}
 
	private function entarFrameHandler(event:Event):void {
		trace('enter frame handler');
		System.gc();
	}
}
При клике по сцене создается объект... и тут же удаляется сборщиком мусора. Насколько я знаю принцип работы ГЦ, объект не уничтожается, если есть хотя бы одна ссылка на него. Что мы имеем тут? _SHAPE находится не в дисплей листе, но является полем класса A. vis также является полем класса A. Сам класс A наследник Object и объект этого класса создается в локальной области видимости, на него ссылок нет, т.е. он явный кандидат на уничтожение. НО! vis, который является дисплей обжектом и полем класса A находится в дисплей листе. Собственно вопрос - какой именно из этих объектов уничтожается и почему?

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

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

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


 


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


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