Цитата:
|
тогда он не может быть главным классом
|
Получается, что нет. Ему и незачем =)
Ну, насчет кода - как-то так:

Код 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;
// здесь перерисовываемся
}
}
}