Примерно так
Main.as

Код AS3:
package
{
import flash.display.Sprite;
import model.AppModel;
import view.View;
public class Main extends Sprite
{
private var _app:AppModel;
private var _view:View;
public function Main()
{
_app = new AppModel(); // создаем модель приложения
_view = new View( _app ); // создаем вьюшку и передаем в неё ссылку на модель
addChild( _view ); // добавляем вьюшку на сцену
// получаем от сервера данные
Core.Server("getInfo", '0', app.onGetInfo , onError);
}
}
}
model.AppModel.as

Код AS3:
package model
{
public class AppModel extends BaseModel
{
private var _user:UserModel;
public function AppModel()
{
super();
_user = new UserModel(); // создаем модель юзера
}
public function get user():UserModel
{
return _user; // геттер модели юзера
}
public function onGetInfo(data:XML):void {
var xml:XML = new XML(data);
_user.diamond = xml.user.diamond; // отправляем в модель полученное значение
}
}
}
model.UserModel.as

Код AS3:
package model
{
public class UserModel extends BaseModel
{
public static var UPDATE_DIAMOND:String = 'UPDATE_DIAMOND'; // идентификатор свойства
public function UserModel(){
super();
}
public function get diamond():Number
{
return _diamond; // публичный геттер значения диамантов
}
public function set diamond(value:Number):void {
if (_diamond==value) return; // если старое значение равно новому, не делаем никаких действий
_diamond = value; // записываем
updateRegister( UserModel.UPDATE_DIAMOND, _diamond ); // выполняем метод BaseModel.updateRegister которому передаем тип свойства и значение
}
private var _diamond:Number = 0;
}
}
view.View.as

Код AS3:
package view
{
import flash.display.Sprite;
import flash.events.Event;
import flash.text.TextField;
import events.UpdateEvent;
import model.AppModel;
import model.UserModel;
public class View extends Sprite
{
private var _app:AppModel;
private var _userMoney:TextField;
public function View(app:AppModel)
{
super();
_app = app; // сохраняем ссылку на модель приложения
createView(); // создаем вьюшку
drawUserMoney( _app.user.diamond ); // принудительно обновляем значение
_app.user.addEventListener( UpdateEvent.UPDATE, updateHandler ); // слушаем обновления данных UserModel
}
private function createView():void
{
_userMoney = new TextField();
addChild( _userMoney );
}
protected function updateHandler(event:UpdateEvent):void
{
// обработчик событий обновления данных
switch (event.property)
{
// если это диаманты пользователя
case UserModel.UPDATE_DIAMOND:
drawUserMoney( event.data ); // берём данные из события !!! преимущественный способ
// или
drawUserMoney( _app.user.diamond ); // берём данные из ссылки модели
break;
default:
break;
}
}
private function drawUserMoney(diamond:Number):void
{
_userMoney.text = String( diamond );
}
}
}
model.BaseModel.as

Код AS3:
package model
{
import flash.events.EventDispatcher;
import events.UpdateEvent;
public class BaseModel extends EventDispatcher
{
public function BaseModel()
{
super();
}
protected function updateRegister(property:String, data:*=null):void {
dispatchEvent(new UpdateEvent(property, data) );
}
}
}
events.UpdateEvent.as

Код AS3:
package events
{
import flash.events.Event;
public class UpdateEvent extends Event
{
public static var UPDATE:String = 'Update_data';
private var _property:String;
private var _data:*;
public function UpdateEvent(property:String,data:*=null)
{
super(UPDATE, true, false);
_property = property;
_data = data;
}
public function get property():String
{
return _property;
}
public function get data():*
{
return _data;
}
override public function clone():Event {
return new UpdateEvent(property,data);
}
}
}