Tất cả chương trình làm là bạn bấm vào một nút và nó cho bạn biết số lần bạn nhấp vào nút trong một trường văn bản.Đây có phải là việc triển khai đúng MVC trong Actionscript 3 không?
Lớp tài liệu: Đây là điểm vào của mã.
package {
import flash.display.MovieClip;
/**
* MVCTest.as
* @author rotaercz
*/
public class MVCTest extends MovieClip {
private var _model:Model;
private var _view:View;
private var _control:Control;
public function MVCTest() {
_model = new Model();
_view = new View(this);
_control = new Control(_model, _view);
}
}
}
Lớp mô hình: Mã mẫu cơ bản.
package {
/**
* Model.as
* @author rotaercz
*/
public class Model {
private var _totalClicks:int;
public function AddClick():void {
_totalClicks++;
}
public function get Clicks():int {
return _totalClicks;
}
public function Model() {
_totalClicks = 0;
}
}
}
Lớp điều khiển: kiểm soát cả đầu vào và cập nhật mô hình và xem tại đây.
package {
import flash.events.MouseEvent;
/**
* Control.as
* @author rotaercz
*/
public class Control {
private var _model:Model;
private var _view:View;
public function Control(model:Model, view:View):void {
_model = model;
_view = view;
_view.addEventListener(MouseEvent.CLICK, OnClick);
}
private function OnClick(e:MouseEvent):void {
_model.AddClick();
_view.Text = "clicked " + _model.Clicks;
}
}
}
Chế độ xem lớp: Biểu thị trực quan của chương trình.
package {
import flash.display.MovieClip;
import flash.events.EventDispatcher;
import flash.events.MouseEvent;
import flash.text.TextField;
/**
* View.as
* @author rotaercz
*/
public class View extends EventDispatcher {
private var _parent:MovieClip;
private var _button:MovieClip;
private var _dt:TextField;
public function set Text(s:String):void {
_dt.text = s;
}
public function View(parent:MovieClip) {
_parent = parent;
_dt = _parent.getChildByName("dt") as TextField;
_button = _parent.getChildByName("mcButton") as MovieClip;
_button.addEventListener(MouseEvent.CLICK, OnClick);
}
private function OnClick(e:MouseEvent):void {
dispatchEvent(e);
}
}
}
nếu bạn không có kế hoạch sử dụng các phương pháp cụ thể trên MovieClip (IE: 'gotoAndPlay()', v.v.), bạn nên sử dụng Sprite thay thế. cũng như, không giống như CPP, quy ước đặt tên các hàm của một lớp (ngoại trừ hàm khởi tạo) bắt đầu bằng chữ thường (IE: 'myFunction()' thay vì 'MyFunction()') – TheDarkIn1978
tất nhiên, đó chỉ đơn giản là vấn đề cá nhân trong khi người ta có thể lập luận rằng quy ước này thậm chí còn khó hiểu hơn khi chỉ có tên của nhà xây dựng bắt đầu bằng một chữ hoa. – TheDarkIn1978
Thực tế là ít gây nhầm lẫn, đó là hàm tạo và do đó phản ánh tên lớp. Có các thành viên được viết hoa là một IMO không có no lớn, nó thực sự không rõ ràng cho dù bạn đang giải quyết thành viên cá thể của thành viên hay thành viên tĩnh của một lớp. – Creynders