发送keyCode没有键事件?

时间:2014-02-04 16:22:06

标签: actionscript-3 flash class adobe

我有这个功能(在文档类中)

public function kyz(event:KeyboardEvent):void{
        trace(event.keyCode);
        switch (event.keyCode){
            case 65:{
                if (ppm.currentFrame<200 || ppm.currentFrame>300) {
                    ppm.gotoAndStop(301);
                    ssm.gotoAndStop(302);
                    llm.gotoAndStop(302);
                    mmm.gotoAndStop(302);
                    myTimer.stop();
                    pd.play();
                }else {
                    pd.play();
                    ppm.gotoAndPlay(10);
                    tlrnc-=10;
                }               
                break;
            }
            case 68:{
                if (ssm.currentFrame<200 || ssm.currentFrame>300) {
                    ssm.gotoAndStop(301);
                    ppm.gotoAndStop(302);
                    llm.gotoAndStop(302);
                    mmm.gotoAndStop(302);
                    myTimer.stop();
                    mTimer.stop();
                    sd.play();
                }else {
                    sd.play();
                    ssm.gotoAndPlay(10);
                    tlrnc-=10;
                }
                break;
            }
            case 74:{
                if (llm.currentFrame<200 || llm.currentFrame>300) {
                    llm.gotoAndStop(301);
                    ppm.gotoAndStop(302);
                    ssm.gotoAndStop(302);
                    mmm.gotoAndStop(302);
                    myTimer.stop();
                    mTimer.stop();
                    ld.play();
                }else {
                    ld.play();
                    llm.gotoAndPlay(10);
                    tlrnc-=10;
                }
                break;
            }
            case 76:{
                if (mmm.currentFrame<200 || mmm.currentFrame>300) {
                    mmm.gotoAndStop(301);
                    ppm.gotoAndStop(302);
                    ssm.gotoAndStop(302);
                    llm.gotoAndStop(302);
                    myTimer.stop();
                    mTimer.stop();
                    md.play();
                }else {
                    md.play();
                    mmm.gotoAndPlay(10);
                    tlrnc-=10;
                }
                break;
            }
        }
    }

接收关键事件并执行操作。现在我试图从另一个函数传递keyCode(以避免更改整个代码以添加点击功能)得到任何建议?

2 个答案:

答案 0 :(得分:1)

如果没有与用户的互动,您将无法发送任何键盘或鼠标事件。您可以在另一个私有函数中处理此问题:

    private function keyDownHandler(event : KeyboardEvent) : void {
        this.handleEvent(event.keyCode);
    }

    private function handleEvent(keyCode : uint) : void {
        //some actions
    }

当您需要执行特定操作时,您可以在没有用户方交互性的情况下调用handleEvent函数。

答案 1 :(得分:1)

您可以发送KeyboardEvent

stage.dispatchEvent(
  new KeyboardEvent(KeyboardEvent.KEY_DOWN, true, false, myCharCode, myKeyCode));

只需添加所需的keyCode作为参数