我正在學習使用ActionScript 3.0進行MVC實現。到目前爲止,我已經做得很好,但有幾個問題可以使我的學習過程非常愉快。我會非常感謝你的幫助和智慧。需要幫助瞭解Actionscript 3 AS3中的MVC實現,請
讓我解釋一下我是如何實現一個簡單的MVC實現:
我的Flash影片被稱爲FusionMVC。我有同樣的包內的所有MVC文件是這樣的:
的DataModel DataControl上 數據視圖 應用門面
這裏是我的問題:
正如我理解正確的話,每當我需要把一個在主舞臺上顯示對象,我在DataView類中聲明或實現該顯示對象,對嗎?
我在主庫中有一個名爲「Box」的符號/顯示對象。通過在運行時能夠看到的DataView類中實例化它,我將這個符號添加到舞臺上。現在,如果我需要爲此對象添加名爲「ClickHandler」的EventListener:
我該在哪裏聲明此「ClickHandler」事件?我目前在DataModel類中聲明它。
我很困惑的是在哪裏聲明EventHandler方法。 DataModel或DataControl?
謝謝你的幫助。這裏是整個代碼:
//DATAMODEL
package
{
import flash.events.*;
import flash.errors.*;
public class DataModel extends EventDispatcher
{
public static const UPDATE:String = "modelUpdaed";
private var _txt:String;
public function DataModel()
{
}
public function get Text():String
{
return _txt;
}
public function set Text(p:String):void
{
_txt = p;
notifyObserver();
trace("MODEL HAS BEEN CHANGED");
}
public function notifyObserver():void
{
dispatchEvent(new Event(DataModel.UPDATE));
}
public function sayHello(e:Event):void
{
trace("HEY HELLO");
}
}
}
//DATACONTROL
package
{
import flash.display.*;
import flash.events.*;
import flash.errors.*;
public class DataControl
{
private var _model:DataModel;
public function DataControl(m:DataModel)
{
_model = m;
}
}
}
//DATAVIEW
package
{
import flash.display.*;
import flash.events.*;
import flash.errors.*;
public class DataView extends Sprite
{
private var _model:DataModel;
private var _control:DataControl;
public var b:Box;
public function DataView(m:DataModel, c:DataControl)
{
_model = m;
_control = c;
addBox();
}
public function addBox():void
{
b = new Box();
b.x = b.y = 150;
//b.addEventListener(MouseEvent.CLICK, vHandler);
addChild(b);
}
}
}
//APPLICATION FACADE
package
{
import flash.display.*;
import flash.events.*;
import flash.errors.*;
public class Main extends Sprite
{
private var _model:DataModel;
private var _control:DataControl;
private var _view:DataView;
public function Main()
{
_model = new DataModel();
_control = new DataControl(_model);
_view = new DataView(_model, _control);
addChild(_view);
}
}
}