hey
im trying to detect keys (up, left, right, down)
i have 2 classes: player and movement
player class:
package {
import flash.display.Sprite;
public class Player extends Sprite {
protected var playerGraphics:Sprite;
public var yAxis:Number = 0;
public var xAxis:Number = 5;
public var right:Boolean = false;
public var left:Boolean = false;
public var up:Boolean = false;
public var down:Boolean = false;
public function Player ( ):void {
playerGraphics = new Sprite ( );
playerGraphics.graphics.lineStyle ( 1, 0, 1 );
playerGraphics.graphics.beginFill ( 0x0000FF );
playerGraphics.graphics.drawRect ( 0, 0, 15, 30 );
playerGraphics.graphics.endFill ( );
this.addChild ( playerGraphics );
}
}
}
and movement class:
package {
import Player;
import flash.events.Event;
import flash.events.KeyboardEvent;
public class Movement extends Player {
public function Movement(dude:Player) {
dude.addEventListener(Event.ENTER_FRAME, movement);
this.addEventListener(KeyboardEvent.KEY_DOWN, checkKeys);
this.addEventListener(KeyboardEvent.KEY_UP, checkKeyUp);
}
private function checkKeys(event:KeyboardEvent) {
if(event.keyCode == 37) {
left = true;
}
if(event.keyCode == 38) {
up = true;
}
if(event.keyCode == 39) {
right = true;
}
if(event.keyCode == 40) {
down = true;
}
}
public function checkKeyUp(event:KeyboardEvent) {
if(event.keyCode == 37) {
event.keyCode = 0;
left = false;
}
if(event.keyCode == 38) {
event.keyCode = 0;
up = false;
}
if(event.keyCode == 39) {
event.keyCode = 0;
right = false;
}
if(event.keyCode == 40) {
event.keyCode = 0;
down = false;
}
}
public function movement(e:Event):void {
if(right) {
e.target.x += xAxis;
}
if(left) {
e.target.x -= xAxis;
}
if(up) {
e.target.y -= yAxis;
}
if(down) {
e.target.y += yAxis;
}
}
}
}
it doesn't give out an error, it just doesn't work
i know the movement functiion in the Movement class (it's an on enter frame event) works because i tried tracing
anyone see the problem?
thanks