Показать сообщение отдельно
Старый 21.11.2010, 22:57
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 5  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Цитата:
тогда он не может быть главным классом
Получается, что нет. Ему и незачем =)

Ну, насчет кода - как-то так:
Код AS3:
package {
 
	import flash.display.Sprite;
	import flash.display.StageAlign;
	import flash.display.StageScaleMode;
	import flash.events.Event;
 
	/*
	 * @author gloomyBrain
	 */
 
	public class Main extends Sprite {
 
		private var _controller:Controller;
 
		public function Main():void {
			if (super.stage) this.init();
			else super.addEventListener(Event.ADDED_TO_STAGE, init);
		}
 
		private function init(event:Event = null):void {
			super.removeEventListener(Event.ADDED_TO_STAGE, init);
			super.stage.align = StageAlign.TOP_LEFT;
			super.stage.scaleMode = StageScaleMode.NO_SCALE;
 
			// entry point
 
			_controller = new Controller();
 
			super.addChild(_controller.view);
 
			_controller.loadXML();
 
 
		}
 
	}
 
}
Код AS3:
package  {
 
	import flash.events.Event;
	import flash.events.EventDispatcher;
 
	/*
	 * @author gloomyBrain
	 */
 
	public class Controller extends EventDispatcher {
 
		private var _view:View;
		private var _model:Model;
 
		public function Controller() {
 
			super();
 
			_model = new Model();
			_view = new View(_model);
 
		}
 
		public function loadXML():void {
 
			// грузщим xml
 
		}
 
		private function onXMLComplete(event:Event):void {
 
			// тут заполняем модель полученными данными
 
			_model.data = ... ;
 
		}
 
		public function get view():View {
			return _view;
		}
 
		public function get model():Model {
			return _model;
		}
 
	}
 
}
Код AS3:
package {
 
	import flash.events.IEventDispatcher;
 
	/*
	 * @author gloomyBrain
	 */
 
	public interface IModel extends IEventDispatcher{
 
		function get data():Object;
 
	}
 
}

Код AS3:
package  {
 
	import flash.events.Event;
	import flash.events.EventDispatcher;
 
	/*
	 * @author gloomyBrain
	 */
 
	public class Model extends EventDispatcher implements IModel {
 
		private var _data:Object = null;
 
		public function Model() {
 
			super();
 
		}
 
		public function get data():Object {
			return _data;
		}
 
		public function set data(value:Object):void {
			_data = value;
			super.dispatchEvent(new Event(Event.CHANGE));
		}
 
	}
 
}
Код AS3:
package  {
 
	import flash.display.Sprite;
	import flash.events.Event;
 
	/*
	 * @author gloomyBrain
	 */
 
	public class View extends Sprite {
 
		private var _model:IModel; // интерфейс, т.к. доступ только на чтение
 
		public function View(model:IModel) {
 
			super();
 
			_model = model;
 
			// слушаем изменения модели
			_model.addEventListener(Event.CHANGE, redraw);
 
		}
 
		private function redraw(event:Event):void {
 
			var newObject:Object = _model.data;
 
			// здесь перерисовываемся
 
		}
 
	}
 
}
__________________
...вселенская грусть