私が使用している 3 つのクラスがあり、読みやすくするために短縮し、パッケージとインポートを省略しています。MainClass
はドキュメント クラスでPlayer
、ムービークリップにリンクされたクラスでありKeyHandler
、キーを押すための関数を含めるために使用しているクラスです。まず、コード..
public class TestMain extends Sprite
{
public var keyHandler:KeyHandler = new KeyHandler();
public var timer:Timer = new Timer(30);
public var player:Player = new Player();
public function TestMain()
{
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyHandler.KeyPress);
stage.addEventListener(KeyboardEvent.KEY_UP, keyHandler.KeyRelease);
timer.addEventListener(TimerEvent.TIMER, onTick);
timer.start();
stage.addChild(player);
}
public function onTick(timerEvent:TimerEvent)
{
player.Move();
}
}
プレイヤークラス..
public class Player extends Sprite
{
public var keyHandler:KeyHandler = new KeyHandler();
public function Player()
{
}
public function Move():void
{
trace("this works");
if (keyHandler.upKeyIsPressed)
{
trace("this doesnt work")
}
}
}
KeyHandler クラス..
public class KeyHandler extends Sprite
{
public var upKeyIsPressed:Boolean = false;
public function KeyHandler()
{
}
public function KeyPress(keyboardEvent:KeyboardEvent)
{
if (keyboardEvent.keyCode == Keyboard.UP)
{
upKeyIsPressed = true;
}
}
public function KeyRelease(keyboardEvent:KeyboardEvent)
{
if (keyboardEvent.keyCode == Keyboard.UP)
{
upKeyIsPressed = false;
}
}
}
上キーを押したままにしても何もトレースしませんが、Move
関数はトレースします。静的にするKeyHandler
必要がありますか、それとも簡単な修正がありますか? これは悪い習慣ですか?