Показать сообщение отдельно
Старый 26.12.2012, 16:35
GknTnm вне форума Посмотреть профиль Отправить личное сообщение для GknTnm Найти все сообщения от GknTnm
  № 3  
Ответить с цитированием
GknTnm

Регистрация: Dec 2012
Сообщений: 6
Спасибо за ответ.

Просто пытаюсь написать "менеджер объектов" и хочется сделать это красиво.

т.е. строкой
Код AS3:
var smb:Symbol1 = new Symbol1();
мы всего лишь указываем что smb будет хранить ссылку на объект, а не сам объект.

возможно ли создать объект который не будет иметь на себя ссылки и не быть чьим либо потомком?
я так понимаю возможно:
Код AS3:
var smb:Symbol1 = new Symbol1();
smb = null;
тогда как потом его удалить?

и далее:
попробовал контролировать объекты в сцене следующим образом, создал класс Global.as и создал в нем массив Unit:

Код AS3:
package  {
 
	public class Global {
 
		public static var Unit:Object = [];
 
		public function Global() {
			// constructor code
		}
 
	}
 
}
основному клипу сделал класс main.as

Код AS3:
package  {
 
	import flash.display.MovieClip;
 
	import Global;
 
 
	public class main extends MovieClip {
 
 
		public function main() {
			// constructor code
			Global.Unit[0] = new Symbol1();
			Global.Unit[1] = new Symbol1();
			Global.Unit[2] = new Symbol1();
 
                        //первый
                        trace(Global.Unit[0].numChildren, Global.Unit[2].numChildren);
                        //1 1
 
			this.addChild(Global.Unit[0]);
			Global.Unit[0].addChild(Global.Unit[1]); 
 
                        //второй
                        trace(Global.Unit[0].numChildren, Global.Unit[2].numChildren);
                        //2 1
 
 
 
			this.addChild(Global.Unit[2]);
			Global.Unit[2].addChild(Global.Unit[1]);
 
                        //третий
                        trace(Global.Unit[0].numChildren, Global.Unit[2].numChildren);
                        // 1 2
 
 
			Global.Unit[1].parent.removeChild(Global.Unit[1]);
                        Global.Unit.splice(1,1);
 
 
 
		}
	}
 
}
и сразу возникли вопросы:

первый trace возвращает "1 1"? кто эти дети?

второй и третий trace меня порадовали - т.е. родитель знает сколько у него детей даже если вдруг его ребенку назначить другого родителя он это отследит. Всегда так, или возможны исключения?

Правильно ли удалять ребенка (из любого места и даже другого класса если ему (другому классу) также импортировать Global) следующим образом:

Код AS3:
Global.Unit[1].parent.removeChild(Global.Unit[1]); //удаляем объект
Global.Unit.splice(1,1); //удаляем ссылку на него
?

или есть более элегантный метод удаления объектов?