1

制作我的新Flash游戏的一些麻烦(我使用AS3,CS5.5):我只是尝试让我的角色(hatt)行走和跳跃,但我不能同时做到,好吧,我知道如何......再者,我不知道如何让我的角色认地。最后这件事在这里:

“场景 1,图层 'hatt',第 1 帧,第 6 行警告:1090:迁移问题:Flash Player 在 ActionScript 3.0 的运行时不会自动触发 onKeyDown 事件处理程序。您必须首先使用 addEventListener 为事件注册此处理程序('keyDown',回调处理程序)。”

请帮助我并提供一些提示...谢谢。

这是代码:

var grav:Number = 10;
var jumping:Boolean = false;
var jumpPow:Number = 0;
stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);
stage.addEventListener(Event.ENTER_FRAME, update);
function onKeyDown(evt:KeyboardEvent):void
{
  if (evt.keyCode == Keyboard.UP)
  {
    if (jumping != true)
    {
      jumpPow = -25;
      jumping = true;
    }
  }
}
function update(evt:Event):void
{
  if (jumping)
  {
    hatt.y +=  jumpPow;
    jumpPow +=  grav;
    if (hatt.y >= stage.stageHeight)
    {
     jumping = false;
     hatt.y = stage.stageHeight;
    }
  }
}

stage.addEventListener (KeyboardEvent.KEY_DOWN, myFunction) ;

function myFunction (event: KeyboardEvent){
  if(event.keyCode == Keyboard.LEFT) {
    hatt.x -= 5
  }
  if(event.keyCode == Keyboard.RIGHT) {
   hatt.x += 5
  }
}
4

1 回答 1

2

删除这一行:

stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);

删除函数 onKeyDown:

function onKeyDown(evt:KeyboardEvent):void
{
  if (evt.keyCode == Keyboard.UP)
  {
    if (jumping != true)
    {
      jumpPow = -25;
      jumping = true;
    }
  }
}

将 myFunction 替换为:

function myFunction (event: KeyboardEvent)
{
  if(event.keyCode == Keyboard.LEFT)  
    hatt.x -= 5;

  if(event.keyCode == Keyboard.RIGHT) 
    hatt.x += 5;

  if(event.keyCode == Keyboard.UP && jumping != true)
  {
     jumpPow = -25;
     jumping = true;
  }
}
于 2012-08-21T00:24:04.647 回答