Keyboard control doesn’t seem to work in my code, can anyone help me out? I can’t debug it because it doesn’t appear to work with Flex SDK and senocular’s Output trace doesn’t seem to work with mxml.
EspCanvas.as
package
{
import flash.display.*;
import flash.utils.*;
import flash.events.*;
import mx.core.UIComponent;
public class EspCanvas extends UIComponent
{
private var TIMER_SPEED:int = 10;
private var player:Sprite = new Sprite();
private var vspeed:Array = new Array();
private var hspeed:Array = new Array();
private var up:Boolean = false;
private var left:Boolean = false;
private var right:Boolean = false;
private var down:Boolean = false;
private var click:Boolean = false;
private var ticker:Timer;
public function init():void // START
{
// set up player
player.graphics.beginFill(0xff0000);
player.graphics.drawCircle(50, 50, 16);
player.graphics.endFill();
vspeed[0] = 0;
hspeed[0] = 0;
addChild(player);
// create input events
addEventListener(KeyboardEvent.KEY_DOWN, keyDown);
addEventListener(KeyboardEvent.KEY_UP, keyUp);
addEventListener(MouseEvent.MOUSE_DOWN, mouseDown);
addEventListener(MouseEvent.MOUSE_UP, mouseUp);
// create a Timer object, tell it to call our onTick method, and start it
ticker = new Timer(10);
ticker.addEventListener(TimerEvent.TIMER, onTick);
ticker.start();
}
public function onTick(e:TimerEvent):void // TICK
{
player.x += hspeed[0];
player.y += vspeed[0];
}
public function keyDown(e:KeyboardEvent):void
{
switch(e.keyCode)
{
case 37:
left = true;
hspeed[0] = -10;
break;
case 38:
up = true;
vspeed[0] = -10;
break;
case 39:
right = true;
hspeed[0] = 10;
break;
case 40:
down = true;
vspeed[0] = 10;
break;
}
}
public function keyUp(e:KeyboardEvent):void
{
switch(e.keyCode)
{
case 37:
left = false;
break;
case 38:
up = false;
break;
case 39:
right = false;
break;
case 40:
down = false;
break;
}
}
public function mouseDown(e:MouseEvent):void
{
click = true;
}
public function mouseUp(e:MouseEvent):void
{
click = false;
}
}
}
Main.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
styleName = "plain"
xmlns="*"
layout="absolute"
creationComplete="initApp()">
<mx:Script>
<![CDATA[
public function initApp():void
{
canvas.init();
}
]]>
</mx:Script>
<EspCanvas id="canvas" width="100%" height="100%" themeColor="#000000" />
</mx:Application>