That are indexes of our angles:
// let's define keys, which will move player (keyCode, state) private static var keys:Array<Array<Int>> = [[37,0],[39,0],[38,0],[40,0],[69,0],[65,0],[68,0],[87,0],[83,0]]; // define array, where angles will be stored private var angles:Array<Int>; // adjust angles to special indexes private function Init(e:Event):Void // Event.ADDED_TO_STAGE { angles = new Array<Int>(); angles[1] = 0; angles[3] = 45; angles[2] = 90; angles[6] = 135; angles[4] = 180; angles[11] = 225; angles[7] = 270; angles[8] = 315; } public function on_key_down(e:KeyboardEvent):Void // KeyboardEvent.KEY_DOWN { for(key in keys) if(e.keyCode == key[0] && key[1] == 0) key[1] = 1; } public function on_key_up(e:KeyboardEvent):Void // KeyboardEvent.KEY_UP { for(key in keys) if(e.keyCode == key[0]) key[1] = 0; } public function on_enter_frame(e:Event):Void // Event.ENTER_FRAME { var r_index:Int = 0; // up - down if(keys[2][1] == 1 || keys[7][1] == 1) { r_index += 1; }else if(keys[3][1] == 1 || keys[8][1] == 1){ r_index += 4; } // left - right if(keys[0][1] == 1 || keys[5][1] == 1) { r_index += 7; }else if(keys[1][1] == 1 || keys[6][1] == 1){ r_index +=2; } if(r_index != 0) this.rotation = angles[r_index]; }
What is pros of that way for me:
- you can define not only array of angles, but array of Bitmaps or Sprites
- you can redefine array of angles (Sprites) on the way without any of code overhead
- cleaner code as for me (just two if - else)
No comments:
Post a Comment