0

我想知道如何从 as3 中的一个单独的类中获取键盘输入。我有一个类将使用箭头键移动,但它需要在hero类中我如何从主函数调用移动函数?

4

1 回答 1

0

您通常会从舞台上监听键盘事件,因此处理此问题的最佳方法可能是将您需要的特定键盘逻辑添加到您的 Hero 类本身。

你可以在你的 Hero 中监听 ADDED_TO_STAGE 和 REMOVED_FROM_STAGE 事件来触发何时添加和移除键盘事件监听器。

一个基本的例子可能像这样工作:

public class Hero extends Sprite
{

    // Constructor
    public function Hero()
    {
        addEventListener( Event.ADDED_TO_STAGE, onAddedToStage );
    }


    // Event handlers

    protected function onAddedToStage( event:Event ):void
    {
        this.removeEventListener( Event.ADDED_TO_STAGE, onAddedToStage );
        this.addEventListener( Event.REMOVED_FROM_STAGE, onRemovedFromStage );
        this.stage.addEventListener( KeyboardEvent.KEY_DOWN, onKeyDown );
        this.stage.addEventListener( KeyboardEvent.KEY_UP, onKeyUp );
    }

    protected function onRemovedToStage( event:Event ):void
    {
        this.addEventListener( Event.ADDED_TO_STAGE, onAddedToStage );
        this.removeEventListener( Event.REMOVED_FROM_STAGE, onRemovedFromStage );
        this.stage.removeEventListener( KeyboardEvent.KEY_DOWN, onKeyDown );
        this.stage.removeEventListener( KeyboardEvent.KEY_UP, onKeyUp );
    }

    protected function onKeyDown( event:KeyboardEvent ):void
    {
        switch (event.keyCode)
        {
            case Keyboard.LEFT:
                // Start movement
                break;
            case Keyboard.RIGHT:
                // Start movement
                break;
        }
    }

    protected function onKeyUp( event:KeyboardEvent ):void
    {
        switch (event.keyCode)
        {
            case Keyboard.LEFT:
                // Stop movement
                break;
            case Keyboard.RIGHT:
                // Stop movement
                break;
        }  
    }
}
于 2014-04-23T06:39:35.147 回答