ActionScript3 рдореЗрдВ MVC рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

рдкреНрд░рд╕реНрддрд╛рд╡рдирд╛


рдЬрдм рдореИрдВрдиреЗ рдЫрд╣ рдорд╣реАрдиреЗ рдкрд╣рд▓реЗ рдкрд╣рд▓реА рдмрд╛рд░ рдПрдХреНрд╢рдирд╕реНрдХреНрд░рд┐рдкреНрдЯ 3 рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛, рддреЛ рдореИрдВрдиреЗ рдХреЛрдб рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрднреА рдирд╣реАрдВ рд╕реЛрдЪрд╛ рдерд╛ред рдореИрдВ рдмрд╕ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ "рд╢реБрд░реБрдЖрддреА" рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдореЗрд░реЗ рдореВрд▓ рдЧреБрдгреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдпрд╛ рдирдП рд╕рд░рд▓ рддрд░реАрдХреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдмреНрд▓реЙрдЧ рдФрд░ рд╕рд╛рдЗрдЯреЛрдВ рдкрд░ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдХреЛрдбред рднрд╛рд╖рд╛ рдХреА рдмреБрдирд┐рдпрд╛рджреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЕрддрд┐рд░рд┐рдХреНрдд рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдиреЗ рдХреА рдмрд╛рд░реА рдереА, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдПрдиреАрдореЗрд╢рди рдХреЗ рд▓рд┐рдП рднреМрддрд┐рдХ рдЗрдВрдЬрди рдФрд░ рдЯреНрд╡рд┐рдирд░реНрд╕ рдХреЗ рд╕рд╛рде, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рдм рдЖрдкрдХреЗ рдЕрдкрдиреЗ рдлрд╝реНрд▓реИрд╢ рдЧреЗрдо рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рд╕реЗ рд╢реБрд░реВ рд╣реБрдЖ рдерд╛ред

рдЕрдиреБрдХреВрд▓рди рдкрд░ рд╡рд┐рдЪрд╛рд░


рдЕрдм, рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛрдб, рдЦрд┐рд▓реМрдиреЛрдВ рдХреЗ рджреЛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдФрд░ рдХреБрдЫ рдЫреЛрдЯреЗ рд▓реЗрдХрд┐рди рдЕрднреА рднреА рдЕрдиреБрднрд╡ рдХреЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рднрдВрдбрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╡рд┐рдЪрд╛рд░ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП MVC рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдпрд╛ рдерд╛ред
MVC рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдЦреЛрдЬрдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдмрд╛рддреЗрдВ рд╕реАрдЦреАрдВ:
1. рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдмреЗрддрд╣рд╛рд╢рд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рд╕рдордп рдХреА рдмрдЪрдд рд╣реЛрддреА рд╣реИ
2. рдкрд░рд┐рдгрд╛рдореА рдХреЛрдб рд╕рдВрд░рдЪрд┐рдд рдмрд╛рд╣рд░ рдЖрддрд╛ рд╣реИ
3. рдХреЛрдб рдХреЗ рдкреВрд░реНрдг рдкреБрдирд░реНрд▓реЗрдЦрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ рдХрд┐рд╕реА рднреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдХреНрд╖рдорддрд╛

ActionScript3 рдХреЗ рд╕рд╛рде MVC рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛


рдФрд░ рдЕрдм рд╣рдо рдПрдХ рд╕реНрдкреЗрд╕рд╢рд┐рдк рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЧреЗрдо рдХреЗ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреА рдУрд░ рдореБрдбрд╝рддреЗ рд╣реИрдВред

рдЖрджрд░реНрд╢

рдЗрд╕ рд╡рд░реНрдЧ рдореЗрдВ рдЬрд╣рд╛рдЬ рдХреА рдЧрддрд┐, рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рдЗрд╕рдХреА рд╕реНрдерд┐рддрд┐ - рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдЬрд╛рдирдХрд╛рд░реА рдЬреЛ рдЬрд╣рд╛рдЬ рдХреА рдЖрд╡рд╛рдЬрд╛рд╣реА рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдкрд░ рдбреЗрдЯрд╛ рд╣реЛрдЧрд╛ред рд╡рд░реНрдЧ рдЦреЗрд▓ рдХреЗ рджреМрд░рд╛рди рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред

рд░рд╛рдп

рд╡рд░реНрдЧ рдореЗрдВ рд╣рдорд╛рд░реЗ рдЦрд┐рд▓реМрдиреЛрдВ рдХреЗ рд╕рднреА рджреГрд╢реНрдп рднрд╛рдЧ рд╣реЛрддреЗ рд╣реИрдВ, рд╕рд╛рде рд╣реА рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╢реНрд░реЛрддрд╛ рднреА рд╣реЛрддреЗ рд╣реИрдВред

рдирд┐рдпрдВрддреНрд░рдХ

рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд╡рд░реНрдЧ рдкреВрд░реЗ рдЖрд╡реЗрджрди рддрд░реНрдХ рд╣реИред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдПрдХ рд╡рд░реНрдЧ рдПрдХ рдШрдЯрдирд╛ рдХреЗ рд▓рд┐рдП рд╕реБрдирддрд╛ рд╣реИ, рдЬрдм рджреГрд╢реНрдп рд╡рд░реНрдЧ рд╕реЗ рдПрдХ рдЧрддрд┐ рдХреБрдВрдЬреА рджрдмрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ; рдореЙрдбрд▓ рд╡рд░реНрдЧ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реИ рддрдм рд╡реНрдпреВ рдХреНрд▓рд╛рд╕ рдирдП рдореЙрдбрд▓ рдбреЗрдЯрд╛ рдХреЛ рдкрдврд╝рддрд╛ рд╣реИ рдФрд░ рд╕реНрдХреНрд░реАрди рдкрд░ рдЬрд╣рд╛рдЬ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддрд╛ рд╣реИред

рдПрдХ рдХреЛрдб рд▓рд┐рдЦрдирд╛


рдЖрдЗрдП рдЬрд╣рд╛рдЬ рдХреЗ рдмрдЬрд╛рдп, рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдмрдирд╛рдПрдВ, рдлреНрд▓реИрд╕рдбреЗрд╡рд▓рдк рдореЗрдВ рдХрд┐рд╕реА рддрд░рд╣ рдХрд╛ рд╕рд░реНрдХрд▓ рдмрдирд╛рдПрдВ рдпрд╛ рд╕реНрдкреЗрд╕рд╢рд┐рдк рдХреА рдЫрд╡рд┐ рдХреЛ рдЖрдпрд╛рдд рдХрд░реЗрдВ - рдлреНрд▓реЗрдХреНрд╕ рдкрд╕рдВрдж рдХрд░рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдПред рд╣рдо рдореЙрдбрд▓, рдирд┐рдпрдВрддреНрд░рдХ рдФрд░ рдкреНрд░рджрд░реНрд╢рди рдХрдХреНрд╖рд╛рдПрдВ рднреА рдмрдирд╛рддреЗ рд╣реИрдВред рд╕реНрд╡рдпрдВ рдореБрдЦреНрдп рд╡рд░реНрдЧ рдирд┐рд░реНрдорд╛рддрд╛:

рдХреНрд▓рд╛рд╕ рдореЗрди
 //......imports...... public class Main extends Sprite { private var m_model:Model; private var m_view:View; private var m_controller:Controller; public function Main() { m_model = new Model(); m_controller = new Controller(m_model); m_view = new View(m_model, m_controller); addChild(m_view); } } 
//......imports...... public class Main extends Sprite { private var m_model:Model; private var m_view:View; private var m_controller:Controller; public function Main() { m_model = new Model(); m_controller = new Controller(m_model); m_view = new View(m_model, m_controller); addChild(m_view); } }

рдпрд╣рд╛рдВ, рдореБрдЦреНрдп рд╡рд░реНрдЧ рдореЗрдВ, рд╣рдо рд╕рднреА рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ "рдкрд░рд┐рднрд╛рд╖рд┐рдд" рдХрд░рддреЗ рд╣реИрдВред рдбрд┐рд╕реНрдкреНрд▓реЗ рдХреНрд▓рд╛рд╕ рдкрд░ рдзреНрдпрд╛рди рджреЗрдирд╛ - рдореЙрдбрд▓ рдФрд░ рдХрдВрдЯреНрд░реЛрд▓рд░ рдХреНрд▓рд╛рд╕ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рддреБрд░рдВрдд рдЗрд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рджреЛрдиреЛрдВ рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░реИрдХреНрдЯ рдХрд░рддрд╛ рд╣реИред рдореЗрд░реЗ рдЦрд┐рд▓реМрдиреЗ рдореЗрдВ, рдХреНрд▓рд╛рд╕ рдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗрд╡рд▓ "рдореЙрдбрд▓" рд╣реА рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИред

рд╡рд░реНрдЧ рджреГрд╢реНрдп
 //......imports...... public class View extends Sprite { [Embed(source="my_small_spaceship_image.jpg")] public var m_image:Class; public var m_spaceShip:Bitmap = new m_image(); private var m_model:Object; private var m_controller:Object; public function View(model:Object, controller:Object):void { m_model = model; m_model.addEventListener(Event.CHANGE, changed); m_controller = controller; m_spaceShip.x = 200; m_spaceShip.y = 200; addChild(m_spaceShip); addEventListener(Event.ADDED_TO_STAGE, addedToStage); } public function addedToStageHandler(event:Event):void { stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPressed); } public function keyPressed(event:KeyboardEvent):void { m_controller.key_Pressed(event); } public function changed(event:Event):void { m_spaceShip.x = m_model.direction[0] m_spaceShip.y = m_model.direction[1]; } } 
//......imports...... public class View extends Sprite { [Embed(source="my_small_spaceship_image.jpg")] public var m_image:Class; public var m_spaceShip:Bitmap = new m_image(); private var m_model:Object; private var m_controller:Object; public function View(model:Object, controller:Object):void { m_model = model; m_model.addEventListener(Event.CHANGE, changed); m_controller = controller; m_spaceShip.x = 200; m_spaceShip.y = 200; addChild(m_spaceShip); addEventListener(Event.ADDED_TO_STAGE, addedToStage); } public function addedToStageHandler(event:Event):void { stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPressed); } public function keyPressed(event:KeyboardEvent):void { m_controller.key_Pressed(event); } public function changed(event:Event):void { m_spaceShip.x = m_model.direction[0] m_spaceShip.y = m_model.direction[1]; } }


рдпрд╣рд╛рдВ рджреЛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ рд╣реИрдВ:
рдкрд╣рд▓реЗ - m_model рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реБрдиреА рдЬрд╛рддреА рд╣реИ, рдФрд░ рдлрд┐рд░ рдкреНрд░рд╛рдкреНрдд рд╡рд┐рдзрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдореЙрдбрд▓ рд╡рд░реНрдЧ рдЬрд╣рд╛рдЬ рдХреЗ рдирдП рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд▓рд╛рдЗрди m_spaceShip.x = m_model.direction[0] рдФрд░ рдХреЙрд▓ рд╡рд┐рдзрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред
рджреВрд╕рд░рд╛ рдмрд┐рдВрджреБ - рдПрдХ рдХреАрдк рдИрд╡реЗрдВрдЯ рдХреЛ рд╕реБрдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдирд┐рдпрдВрддреНрд░рдХ рд╡рд░реНрдЧ рдХреА рд╡рд┐рдзрд┐ рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдлрд┐рд░ рд╕реЗрдЯ рд╡рд┐рдзрд┐ (рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдХрдВрдЯреНрд░реЛрд▓рд░ рд╡рд░реНрдЧ рд╕реЗ рд╣реИ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рдирдП рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВред

рдХрдХреНрд╖рд╛ рдирд┐рдпрдВрддреНрд░рдХ
 public class Controller public class Controller { private var m_model:Object; public function Controller(model:Object):void { m_model = model; } public function key_Pressed(event:KeyboardEvent):void { switch (event.keyCode) { case Keyboard.LEFT: m_model.direction = new Array(m_model.direction[0] - 5, m_model.direction[1]); break; case Keyboard.RIGHT: m_model.direction = new Array(m_model.direction[0] + 5, m_model.direction[1]); break; case Keyboard.UP: m_model.direction = new Array(m_model.direction[0], m_model.direction[1] - 5); break; case Keyboard.DOWN: m_model.direction = new Array(m_model.direction[0], m_model.direction[1] + 5); break; } } } 
public class Controller public class Controller { private var m_model:Object; public function Controller(model:Object):void { m_model = model; } public function key_Pressed(event:KeyboardEvent):void { switch (event.keyCode) { case Keyboard.LEFT: m_model.direction = new Array(m_model.direction[0] - 5, m_model.direction[1]); break; case Keyboard.RIGHT: m_model.direction = new Array(m_model.direction[0] + 5, m_model.direction[1]); break; case Keyboard.UP: m_model.direction = new Array(m_model.direction[0], m_model.direction[1] - 5); break; case Keyboard.DOWN: m_model.direction = new Array(m_model.direction[0], m_model.direction[1] + 5); break; } } }

рдпрд╣рд╛рдВ рд╣рдордиреЗ рдореЙрдбрд▓ рд╡рд░реНрдЧ рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдФрд░ рдореЙрдбрд▓ рдХреНрд▓рд╛рд╕ рдХреЗ рд╕реЗрдЯ рд╡рд┐рдзрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрд╕рдХреА рд╕реНрдерд┐рддрд┐ рдмрджрд▓ рджреАред
рддрдм рдЪрд░ m_direction m_model.direction = new Array (m_model.direction [0] - 5, m_model.direction [1]) рд╕рдВрдЪрд╛рд▓рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЗрд╕рдХрд╛ рдорд╛рди рдмрджрд▓ рджреЗрдЧрд╛ред
рдФрд░ рдЕрдВрдд рдореЗрдВ, рдореЙрдбрд▓ рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:

рдХреНрд▓рд╛рд╕ рдореЙрдбрд▓
 public class Model extends EventDispatcher { private var m_direction:Array = new Array(); public function Model() { m_direction.push(200, 200); } public function get direction():Array { return m_direction; } public function set direction(m_values:Array):void { m_direction[0] = m_values[0]; m_direction[1] = m_values[1]; dispatchEvent(new Event(Event.CHANGE)); } } 
public class Model extends EventDispatcher { private var m_direction:Array = new Array(); public function Model() { m_direction.push(200, 200); } public function get direction():Array { return m_direction; } public function set direction(m_values:Array):void { m_direction[0] = m_values[0]; m_direction[1] = m_values[1]; dispatchEvent(new Event(Event.CHANGE)); } }


рдпрд╣рд╛рдВ, рд╕реЗрдЯ рд╡рд┐рдзрд┐ рдореЙрдбрд▓ рдХреА рд╕реНрдерд┐рддрд┐ рдбреЗрдЯрд╛ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддреА рд╣реИ, рджреГрд╢реНрдп рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╢реНрд░реЛрддрд╛ рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ - рд╣рдорд╛рд░реЗ рдирд╛рд╡ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рддрджрдиреБрд╕рд╛рд░ рдмрджрд▓рддреЗ рд╣реИрдВред

рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдореИрдВрдиреЗ ActionScript3 рдореЗрдВ MVC рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдХреА рдЬрд╛рдВрдЪ рдХреАред рдпрджрд┐ рдЖрдкрдХреЗ рдХреЛрдИ рдкреНрд░рд╢реНрди рд╣реИрдВ, рддреЛ рдореБрдЭреЗ рдЙрддреНрддрд░ рджреЗрдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред

Source: https://habr.com/ru/post/In130189/


All Articles