рд╕рднреА рд░реВрдкрд░реЗрдЦрд╛рдУрдВ рдореЗрдВ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд╡реЗ рд╕рднреА рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдмрдирд╛рдиреЗ рдХреЗ рдирд┐рдпрдореЛрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдкрдиреЗ рдХрднреА рднреА рдЕрдкрдиреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдХрд┐рд╕реА рднреА рдврд╛рдВрдЪреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдпрд╛ рддреЛ
рд╡реЗ рдмрд╣реБрдд рдЫреЛрдЯреЗ рд╣реИрдВ рдФрд░ рдЖрдкрдХреЛ рдХреЛрдб рдореЗрдВ рдмрдврд╝рддреА рдЕрд░рд╛рдЬрдХрддрд╛ рдХреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рдкрдбрд╝рд╛, рдпрд╛ рдЖрдкрдХрд╛ рд╕рдордп рдЕрднреА рдирд╣реАрдВ рдЖрдпрд╛ рд╣реИ :) рдФрд░ рдЕрдВрдд рдореЗрдВ, рдлреНрд░реЗрдорд╡рд░реНрдХ рдирд┐рдпрдореЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдмрдирд╛рдП рдЧрдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рд╣реА рд░реВрдк рдорд┐рд▓реЗрдЧрд╛ред рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдо рд╕рдм рдХреНрдпрд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ рдПрдХ рд╢реБрд░реБрдЖрдд, рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдврд╛рдВрдЪреЗ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рд╣реИ, рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕реЛрдЪрдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдкрд┐рдЫрд▓реА рдкреАрдврд╝рд┐рдпреЛрдВ рдХреЗ рдЕрдиреБрднрд╡ рдХреЛ рдЕрдкрдирд╛рдирд╛ рдФрд░ рдЦреБрдж рдХреЛ рдПрдХ рд╕реНрдореВрде рддрд░реАрдХреЗ рд╕реЗ рдЖрдЧреЗ рдмрдврд╝рд╛рдирд╛ рд╣реИред рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдмрдбрд╝реЗ, рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд▓ рдФрд░ рдореЙрдбреНрдпреВрд▓рд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред
рддреЛ рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ ...
MVC "рдореЙрдбрд▓-рджреГрд╢реНрдп-рд╡реНрдпрд╡рд╣рд╛рд░" === "рдореЙрдбрд▓-рджреГрд╢реНрдп-рдирд┐рдпрдВрддреНрд░рдХ"ред
рдЕрдм рдЕрдкрдиреА рдЖрдБрдЦреЗрдВ рдмрдВрдж рдХрд░реЗрдВ рдФрд░ рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреЗ рдХрд╛рдо рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВред рдкреНрд░рд╕реНрддреБрдд рд╣реИ? ... рдФрд░ рдЗрд╕рд▓рд┐рдП, рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рд╢рд░реНрдд рд░реВрдк рд╕реЗ рддреАрди рдЕрдореВрд░реНрдд рддрд╛рд░реНрдХрд┐рдХ рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:
рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреЗ рд╕рднреА рддрд░реАрдХреЛрдВ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░реЗрдВ рдЬреЛ рд╕рднреА рджреГрд╢реНрдп рдШрдЯрдХреЛрдВ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рдирд┐рдкрдЯрддреЗ рд╣реИрдВ, рдЙрди рддрд░реАрдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рджреГрд╢реНрдп рддрддреНрд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬреНрдЮрд╛рди рд╣реИ, рдЬреЛ рдЙрдиреНрд╣реЗрдВ рд╕реНрдХреНрд░реАрди рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рд▓реЗ рдЬрд╛рдиреЗ рдХреЗ рд╕рд╛рде рд╕реМрджрд╛ рдХрд░рддреЗ рд╣реИрдВ, рдЖрджрд┐ред рдорд╛рдирд╕рд┐рдХ рд░реВрдк рд╕реЗ рдЙрдиреНрд╣реЗрдВ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдПрдХ рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░реЗрдВ, рдпрд╣ (рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡) рд╣реЛрдЧрд╛ред
рдЕрдЧрд▓рд╛ред рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреЗ рд╕рднреА рддрд░реАрдХреЛрдВ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░реЗрдВ рдЬреЛ рдХрд┐ рдЖрд╡реЗрджрди рдХреЗ рддрд░реНрдХ рд╕реЗ рдирд┐рдкрдЯрддреЗ рд╣реИрдВ, рдРрд╕реЗ рддрд░реАрдХреЗ рдЬрд┐рдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬреНрдЮрд╛рди рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдФрд░ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИред рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдШрдЯрдХреЛрдВ рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЙрдбрд▓ред рдорд╛рдирд╕рд┐рдХ рд░реВрдк рд╕реЗ рдЙрдиреНрд╣реЗрдВ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдПрдХ рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░реЗрдВ, рдпрд╣ (рдореЙрдбрд▓) рд╣реЛрдЧрд╛ред
рддреАрд╕рд░рд╛, рд▓реЗрдХрд┐рди рдХреЛрдИ рдХрдо рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣рд┐рд╕реНрд╕рд╛ рдирд╣реАрдВ рд╣реИ, рд╡реЗ рддрд░реАрдХреЗ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рдореЙрдбрд▓ рд╡реНрдпрд╡рд╣рд╛рд░ рд╕реНрд╡рдпрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рддрдерд╛рдХрдерд┐рдд "рдирд┐рдпрдВрддреНрд░рдХ"ред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпреЗ рдХрд┐рд╕реА рднреА рддрд░реАрдХреЗ рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдЧреЗрдо рд▓реЙрд╕ рдЗрд╡реЗрдВрдЯ рджреНрд╡рд╛рд░рд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: рдлрд╝рдВрдХреНрд╢рди onLoseLevel (e: SomeEvent): рд╢реВрдиреНрдпред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рд╡рд┐рдзрд┐ рд╣рд╛рдирд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдХреЗ рдореЙрдбрд▓ рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИред рдЬреИрд╕реЗ рд╣реА рдЖрдк рд╕реНрддрд░ рдЦреЛ рджреЗрддреЗ рд╣реИрдВ, рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рдзрд┐ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдореЗрдВ рдЖрд╡реЗрджрди рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рддреЛ, рдЙрди рд╕рднреА рддрд░реАрдХреЛрдВ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░реЗрдВ рдЬреЛ рдПрдХ рдвреЗрд░ рдореЗрдВ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ
рдпрд╣ MVC, (рдирд┐рдпрдВрддреНрд░рдХ) рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХрд╛ рддреАрд╕рд░рд╛ рддрд╛рд░реНрдХрд┐рдХ рд╣рд┐рд╕реНрд╕рд╛ рд╣реЛрдЧрд╛ред
рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдордЭ рдирд╣реАрдВ рдкрд╛рдП рдФрд░ рдЗрд╕ рд╕рд╡рд╛рд▓ рдХрд╛ рдЬрд╡рд╛рдм рдирд╣реАрдВ рджрд┐рдпрд╛ рдХрд┐ рдЗрд╕ рдкреВрд░реЗ рд╡рд┐рднрд╛рдЬрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ: рдХреЛрдб рдХрдиреЗрдХреНрдЯрд┐рд╡рд┐рдЯреА рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрд░реНрдерд╛рддред рдХрд┐рд╕реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдХреБрдЫ рдмрджрд▓рдирд╛, рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рджреВрд╕рд░реЗ рднрд╛рдЧ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдорд╛рд░рд╛ рдЖрд╡реЗрджрди рдЕрдзрд┐рдХ рд▓рдЪреАрд▓рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рд╕реНрд╡рддрдВрддреНрд░ рдореЙрдбреНрдпреВрд▓ рд╢рд╛рдорд┐рд▓ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рд╣реЛрддреЗ рд╣реИрдВред
HVCWorld рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдкрд░ MVC рдЕрд╡рдзрд╛рд░рдгрд╛ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
HelloWorld.as:package { import flash.display.Sprite; import flash.events.Event; import flash.text.TextField; public class HelloWorld extends Sprite { private var viewComponent :TextField; public static var model :Model; public static var view :View; public static var controller :Controller; public function HelloWorld() { addEventListener(Event.ADDED_TO_STAGE, showTextHandler); viewComponent = new TextField(); addChild(viewComponent); model = new Model(); view = new View(viewComponent); controller = new Controller(); } protected function showTextHandler(event:Event):void { controller.showTextFieldCommand(); } } }
Model.as package { public class Model { private var _textString :String = "Hello World!"; public function Model() { } public function get textString():String { return _textString; } public function set textString(value:String):void { _textString = value; } } }
View.as: package { import flash.text.TextField; public class View { private var _view:Object; public function View(viewObj:Object) { view = viewObj; } public function changeView(str:String):void { view.text = str; } public function set view(value:Object):void { _view = value; } public function get view():Object { return _view; } } }
Controller.as: package { public class Controller { public function showTextFieldCommand():void { var str:String = HelloWorld.model.textString; HelloWorld.view.changeView(str); } } }
рд▓рдЧрднрдЧред рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣рд╛рдВ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИред рдЖрд╡реЗрджрди рдХрд╛ рдПрдХ рдореБрдЦреНрдп рд╡рд░реНрдЧ рд╣реИ: HelloWorld.as рдЬреЛ рд╕рдм рдХреБрдЫ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рдЗрд╕рдореЗрдВ, рд╣рдо TextField рдкреНрд░рдХрд╛рд░ (рдкрд╛рда рдХреНрд╖реЗрддреНрд░) рдХрд╛ рдПрдХ рдПрдХрд▓ рджреГрд╢реНрдп рдШрдЯрдХ рдмрдирд╛рддреЗ рд╣реИрдВ, рд╕рд╛рде рд╣реА Model.as, View.as рдФрд░ рдирд┐рдпрдВрддреНрд░рдХ.as рдХреЗ рдЙрджрд╛рд╣рд░рдг рднреА рджреЗрддреЗ рд╣реИрдВред рдЕрдм рдЗрд╕реЗ рдХреИрд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдП?
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рд╡рд┐рдЬреБрдЕрд▓ рдХрдВрдкреЛрдиреЗрдВрдЯ рдХреЛ рдЕрдкрдиреЗ рд╡реНрдпреВ рдХрдВрдЯреНрд░реЛрд▓ рдореЗрдВ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЗ рдкрд╛рд╕ рднреЗрдЬрддреЗ рд╣реИрдВ:
view = new View(viewComponent);
artemfedorov.com/?p=64рдЕрдм рд╣рдорд╛рд░реЗ рд╡рд┐рдЪрд╛рд░ рдШрдЯрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддреЗ рд╣реИрдВред
рдЗрд╕рдХреЗ рдмрд╛рдж, рд╡реНрдпреВ рдореЗрдВ рдПрдХ рд╡рд┐рдзрд┐ рдЬреЛрдбрд╝реЗрдВ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдпрд╣ рдШрдЯрдХ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ:
public function changeView(str:String):void { view.text = str; }
рдпрд╣ рдХреЗрд╡рд▓ рдШрдЯрдХ рдХреЗ рдкрд╛рда рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рдирдпрд╛ рдорд╛рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╣рдорд╛рд░реЗ рдореЙрдбрд▓ рдореЗрдВ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЪрд░ рдХреЗ рдореВрд▓реНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЗрд╡рд▓ рдЬреНрдЮрд╛рди рд╣реИ, рдФрд░ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдЗрд╕ рддрдХ рд╕реАрдорд┐рдд рд╣реИред
private var _textString :String = "Hello World!";
рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдЖрджреЗрд╢ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдореЙрдбрд▓ рд╕реЗ рдПрдХ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:
public function showTextFieldCommand():void { var str:String = HelloWorld.model.textString; HelloWorld.view.changeView(str); }
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдВрддрд┐рдо рд╕реНрдкрд░реНрд╢ рдЬрд┐рд╕рдХреЗ рдмрд┐рдирд╛ рдпрд╣ рдШрдЯрдирд╛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧреАред рдпрд╣рд╛рдВ, рдПрдХ рдШрдЯрдирд╛ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдПрдХ рдШрдЯрдирд╛ рдХрд╛ рдЪрдпрди рдХрд┐рдпрд╛ рдЬреЛ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдордВрдЪ рдкрд░ рдПрдХ рдЬреЛрдбрд╝ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдПрдХ рд╢реНрд░реЛрддрд╛ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ:
addEventListener (Event.ADDED_TO_STAGE, showTextHandler);
рдЗрд╕ рдШрдЯрдирд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдПрдХ рдХрдорд╛рдВрдб рд╕рдВрд▓рдЧреНрди рдХреА:
protected function showTextHandler(event:Event):void { controller.showTextFieldCommand(); }
www.artemfedorov.comрд╡рд╣ рд╕рдм рд╣реИ!