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