Я изучаю реализацию MVC с помощью ActionScript 3.0. Пока я справился, но у меня есть пара вопросов, которые могут сделать этот процесс обучения очень приятным для меня. Буду очень признателен за вашу помощь и мудрость.
Позвольте мне объяснить, как я реализую простую реализацию MVC:
Мой Flash-фильм называется FusionMVC. У меня есть все файлы MVC в одном пакете, как это:
DataModel
DataControl
DataView
Фасад приложения
Вот мой вопрос:
Насколько я понимаю, всякий раз, когда мне нужно разместить экранный объект на главной сцене, я объявляю или реализую этот экранный объект в классе DataView, я прав?
У меня есть символ / экранный объект под названием «Коробка» в основной библиотеке. Я добавляю этот символ на сцену, создав его экземпляр в классе DataView, который я могу видеть во время выполнения. Теперь, если мне нужно добавить EventListener под названием «ClickHandler» к этому объекту:
Где я могу объявить это событие "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);
}
}
}