Показать сообщение отдельно
Старый 01.02.2011, 19:26
Killer_13 вне форума Посмотреть профиль Отправить личное сообщение для Killer_13 Найти все сообщения от Killer_13
  № 1  
Ответить с цитированием
Killer_13
 
Аватар для Killer_13

Регистрация: Jan 2007
Сообщений: 302
Question Объекты удалены, а профайлер показывает, что они еще висят в памяти?! :(

Значит структура классов такова, из Controller в UI_Connection, из UI_Connection в UI_NewGame, но вопрос чуток в другом.

Смотрю на примере Комбобоксов. "из Controller в UI_Connection" - их нету на рабочей области, профайлер показывает, что их действительно нету в памяти, - все ок.

Потом "из UI_Connection в UI_NewGame" - появились на сцене 3 комбобокса, профайлер показывает, что они есть - все ок.

потом вот что делается в классе "UI_NewGame" - там кнопочка при нажатии на которую осуществляется коннект и передается управление классу Constructor который все удаляет и создает новый обьект.

НО! Все элементы интерфейса лежат в памяти. Почему?


Вот структура класса - там ничего сложного посмотрите пож
Код AS3:
package  
{
	import fl.controls.Button;
	import fl.controls.ComboBox;
	import flash.display.MovieClip;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.net.NetConnection;
	import flash.events.NetStatusEvent;
	import flash.text.TextField;
	import flash.utils.Timer;
	import flash.events.TimerEvent;
	/**
	 * ...
	 * @author webdev
	 */
	public class UI_NewGame extends MovieClip 
	{
		private var anFrame:MaskFrame;
		private var cont:Sprite;
		private var btn_Create:Button;
		private var _uiConnection:UI_Connection;
		private var _controller:Controller;
		private var comboSpCount:ComboBox;
		private var comboSpStake:ComboBox;
		private var comboSpStartGeld:ComboBox;
		private var array:Array = new Array(3);
		private var netCon:NetConnection;
		private var _fmsConnection:FMS_Connect;
		private var urlName:String;
		private var appName:String;
 
		public function UI_NewGame(_uiConnection:UI_Connection, _controller:Controller, urlName:String, appName:String) {
			trace("<--UI_NewGame::UI_NewGame-->");
			this._controller = _controller;
			this._uiConnection = _uiConnection;
			this.urlName = urlName;
			this.appName = appName;
			setInterface();
			}
 
		private function setInterface():void {
			trace ("func___setInterface");
			cont = new Sprite();
			setFrame();
			}
 
		private function setFrame():void {			
			trace("func___setFrame");
			this.anFrame = new MaskFrame();
			this.addChild(this.cont);
			this.anFrame.x = 50;
			this.anFrame.y = 200;
			this.cont.addChild(this.anFrame);
 
		    var timer:Timer = new Timer(1400, 1);
			timer.start();
			timer.addEventListener(TimerEvent.TIMER, comboSpCnt);
			}
 
		private function comboSpCnt(event:TimerEvent):void {
			trace("func___comboSpCount");
 
			comboSpCount = new ComboBox();
			this.comboSpCount.x = 125;
			this.comboSpCount.y = 217;
 
			comboLabel(100, 200, "Waehle die Anzahl der Spieler");
			for (var i:int = 2; i <9; i++) {
				this.comboSpCount.addItem({label:i, data:i});				
			}
 
			this.cont.addChild(this.comboSpCount);
 
			var timer:Timer = new Timer (400, 1);
			timer.start();
			timer.addEventListener(TimerEvent.TIMER, comboSpSt);
			(event.target as Timer).removeEventListener(TimerEvent.TIMER, comboSpCnt);
			}
 
		private function comboSpSt(event:TimerEvent):void {
			trace("func___comboSpStake");
 
			this.comboSpStake = new ComboBox();
			this.comboSpStake.x = 125;
			this.comboSpStake.y = 352;
 
			comboLabel(100, 335, "Waehle den maximalen Einsatz $");
			for (var i:int = 1; i <=10; i++) {
				this.comboSpStake.addItem({label:i, data:i});				
			}
 
			this.cont.addChild(this.comboSpStake);
 
			var timer:Timer = new Timer (400, 1);
			timer.start();
			timer.addEventListener(TimerEvent.TIMER, comboSpStGeld);
			(event.target as Timer).removeEventListener(TimerEvent.TIMER, comboSpSt);
			}
 
		private function comboSpStGeld(event:TimerEvent):void {
			trace("func___comboSpStartGeld");
 
			this.comboSpStartGeld = new ComboBox();
			this.comboSpStartGeld.x = 125;
			this.comboSpStartGeld.y = 482;
 
			comboLabel(100, 465, "                  $ Max");
			for (var i:int = 1; i <=5; i++) {
				this.comboSpStartGeld.addItem({label:i, data:i});				
			}
 
			this.cont.addChild(this.comboSpStartGeld);
 
			var timer:Timer = new Timer (400, 1);
			timer.start();
			timer.addEventListener(TimerEvent.TIMER, btn_NewGame);
			(event.target as Timer).removeEventListener(TimerEvent.TIMER, comboSpStGeld);
			}
 
		private function btn_NewGame(event:TimerEvent):void {
			trace ("func___btn_NewGame");
			this.btn_Create = new Button();
			this.btn_Create.label = "Create";
			this.btn_Create.x = 125;
			this.btn_Create.y = 620;
			this.cont.addChild(this.btn_Create);
			this.btn_Create.addEventListener(MouseEvent.CLICK, btn_Create_clk);
			(event.target as Timer).removeEventListener(TimerEvent.TIMER, btn_NewGame);
		}
 
		private function comboLabel(_x:int, _y:int, str:String):void {
			trace ("func___comboLabel");
			var label:TextField = new TextField();
			label.x = _x;
			label.y = _y;
			label.textColor = 0xFFFFFF;
			label.width = 150;
			label.text = str;
			this.cont.addChild(label);
		}
 
		private function btn_Create_clk(event:MouseEvent):void {
			trace ("func___btn_Create_clk");
			this._fmsConnection = new FMS_Connect(urlName, appName);
			this.netCon = this._fmsConnection.connecting();
			this.netCon.addEventListener('netStatus', netStatusHandler);
			}
 
		private function netStatusHandler(event:NetStatusEvent):void {
			trace("func___netStatusHandler");
			if (event.info.code == "NetConnection.Connect.Success") 
				setConnected();
			else 
				_uiConnection.setError();
		}
 
		private function setConnected():void {
			trace("func___setConnected1");
			eventRemove();
			this._controller.uiLogIn();
		}
 
		private function eventRemove():void {
			trace("function___eventRemove");
			this.netCon.removeEventListener('netStatus', netStatusHandler);
			this.btn_Create.addEventListener(MouseEvent.CLICK, btn_Create_clk);
 
	        }
Вот функции из контроллера.
Код AS3:
 
		public function uiLogIn():void {
			trace("func___uiLogIn");
			destructor();
			_uigame = new UI_Game();
			this.addChild(_uigame);
			}
 
		private function destructor():void {
			trace("func___destructorC");
 
			while (numChildren)
				removeChildAt(0);
		}
Огромное спасибо за подсказку, и вообще - я правильно передаю управление приложением обратно????