सभी कार्यक्रम यह है कि आप एक बटन पर क्लिक करते हैं और यह आपको बताता है कि आपने टेक्स्टफील्ड में बटन पर कितनी बार क्लिक किया था।क्या यह एक्शनस्क्रिप्ट 3 में एमवीसी का सही कार्यान्वयन है?
दस्तावेज़ कक्षा: यह कोड का प्रवेश बिंदु है।
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);
}
}
}
मॉडल कक्षा: मूल मॉडल कोड।
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;
}
}
}
नियंत्रण वर्ग: मॉडल के इनपुट और अद्यतन दोनों को नियंत्रित करता है और यहां देखें।
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;
}
}
}
कक्षा देखें: कार्यक्रम का दृश्य प्रतिनिधित्व।
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);
}
}
}
यदि आप मूवीक्लिप (आईई: 'gotoAndplay() ', आदि) पर विशिष्ट विधियों का उपयोग करने की योजना नहीं बनाते हैं, तो आपको इसके बजाय स्प्राइट का उपयोग करना चाहिए। सीपीपी के विपरीत, एक वर्ग के कार्यों को नामित करने के लिए सम्मेलन (कन्स्ट्रक्टर को छोड़कर) लोअरकेस (आईई: 'मायफंक्शन() 'के बजाय' myFunction() ' – TheDarkIn1978
के बजाय शुरू होता है, यह केवल व्यक्तिगत शैली का मामला है, कोई तर्क दे सकता है कि यह सम्मेलन केवल कन्स्ट्रक्टर का नाम अपरकेस अक्षर से शुरू होने के लिए और भी भ्रमित है। – TheDarkIn1978
जो वास्तव में कम भ्रमित है, यह कन्स्ट्रक्टर है और इसलिए कक्षा का नाम दर्शाता है। पूंजीकृत सदस्यों के पास एक बड़ा नो-आईएमओ नहीं है, यह वास्तव में अस्पष्ट है कि आप किसी सदस्य के इंस्टेंस सदस्य या कक्षा के स्थिर सदस्य को संबोधित कर रहे हैं या नहीं। – Creynders