///////////////////////////////////////////////////////////////////////////////// // Copyright (C) 2010-2011 Wolfgang Kowarschick // // Dieses Werk darf unter den Bedingungen der Creative Common Lizenz by-nc 3.0 de // (http://creativecommons.org/licenses/by-nc/3.0/de/) // vervielfaeltigt, verbreitet, publiziert und modifiziert werden. ///////////////////////////////////////////////////////////////////////////////// package as3.component.direction.control { import as3.assert.Assert; import as3.component.direction.EnumDirection; import as3.component.direction.ExtentEnumDirection; import as3.component.direction.I_ExtentEnumDirection; import as3.component.direction.logic.I_LogicDirection; import flash.display.Stage; import flash.events.KeyboardEvent; /** * @autor Wolfgang Kowarschick * @category class * @langversion 3.0 */ public class A_ControlDirectionKey implements I_ControlDirectionKey { ///////////////////////////////////////////////////////////////////////////// // LDVCS ///////////////////////////////////////////////////////////////////////////// private var v_logic: I_LogicDirection; public function set logic(p_logic: I_LogicDirection): void { if (v_logic != p_logic) { Assert.equals(v_logic, null, this, "logic has already been initialized"); Assert.notEquals(p_logic, null, this, "logic cannot be set to null"); v_logic = p_logic; }; } public function get logic(): I_LogicDirection { return v_logic; } private var v_stage: Stage; public function set stage(p_stage: Stage): void { if (v_stage != p_stage) { Assert.equals(v_stage, null, this, "stage has already been initialized"); Assert.notEquals(p_stage, null, this, "stage cannot be set to null"); v_stage = p_stage; }; } ///////////////////////////////////////////////////////////////////////////// // Constructor ///////////////////////////////////////////////////////////////////////////// public function A_ControlDirectionKey (p_enum_class: Class, p_logic: I_LogicDirection = null, p_stage: Stage = null ) { this.logic = p_logic; this.stage = p_stage; this.enumExtent = new ExtentEnumDirection(p_enum_class); } ///////////////////////////////////////////////////////////////////////////// // Protected members ///////////////////////////////////////////////////////////////////////////// protected var enumExtent: I_ExtentEnumDirection; protected function keyClick(p_event: KeyboardEvent): void { throw (new Error("keyClick must be overridden")) } ///////////////////////////////////////////////////////////////////////////// // Public methods ///////////////////////////////////////////////////////////////////////////// private var v_is_started: Boolean = false; public function startListening(): void { if (!v_is_started) { v_stage.addEventListener(KeyboardEvent.KEY_DOWN, keyClick); v_is_started = true; } } public function stopListening(): void { if (v_is_started) { v_stage.removeEventListener(KeyboardEvent.KEY_DOWN, keyClick); v_is_started = false; } } ///////////////////////////////////////////////////////////////////////////// // End of class ///////////////////////////////////////////////////////////////////////////// } } ///////////////////////////////////////////////////////////////////////////////// // End of file /////////////////////////////////////////////////////////////////////////////////