+ -
当前位置:首页 → 问答吧 → 按键响应太慢

按键响应太慢

时间:2011-02-09

来源:互联网

在做一个小游戏,按键响应部分代码如下:
var myListener:Object = new Object();
myListener.onKeyDown = function() {
       
       
       tx=a_mc._x;
       ty=a_mc._y;
              if (Key.isDown(Key.LEFT))
                 tx-=1;
   
       else if (Key.isDown(Key.RIGHT))
        tx+=1;
       
        else if (Key.isDown(Key.UP))
        ty-=1;
        else if (Key.isDown(Key.DOWN))
        ty+=1;

   { a_mc._x=tx; a_mc._y=ty;}

按下某一个键不放,比如右箭头键,a_mc连续移动。

现在的问题是:想a_mc移动得快一点,(注意不是步幅大,步幅大的话我知道可以用tx+=10),于是提高帧频的设置,但不管怎样设(都设到100了)还是没效果,为什么会这样?
有什么解决方法吗?
补充一下,我这个游戏只有一帧,AS代码就放在第一帧

[ 本帖最后由 efreshman 于 2011-2-9 10:58 编辑 ]

附件

eat.rar (7.73 KB)

2011-2-9 10:58, 下载次数: 1

作者: efreshman   发布时间: 2011-02-09

把 myListener.onKeyDown  替换成 onEnterFrame

作者: flash023   发布时间: 2011-02-09

不行了,改了后按键都没反应了
Key.addListener(myListener);
Key类不支持onEnterFrame吗???

作者: efreshman   发布时间: 2011-02-09

改了之后行

作者: flash023   发布时间: 2011-02-09

按照2楼的说法,行了,改帧频时有效了

我开始时可能改错了,现在把myListener.onKeyDown改为a_mc.onEnterFrame,行了

不过不知道这样改对以后的代码布局有没有响影,暂时一切正常

谢谢!

作者: efreshman   发布时间: 2011-02-09

从目前信息看,不会有影响。
当然不是绝对的,因为说不定其它地方还有怪异的不合逻辑的代码与之有关呢

作者: flash023   发布时间: 2011-02-09

现在试了一下,好像不能像之前那样可以精确按制mc的位置了,之前按一下,马上放开手,mc就移动+1,事件触发一次,现在按一下,马上放开手,mc好像移得比较多,事件应该不只触发一次,调低帧频后,好像才行,但速度又达不到要求.

我是想按一下马上放手时,mc就移动一格(这样可以精确控制位置),按下不放时mc就连续快速移动。

[ 本帖最后由 efreshman 于 2011-2-9 10:49 编辑 ]

作者: efreshman   发布时间: 2011-02-09

没有好像,一定可以的

如果帧率需要设置得低,可以用setInterval 替代onEnterFrame

代码是需要结合环境的,如果要继续追问,请看
提问时,只说现象不上文件,不上代码的


这是回复帖子的通稿,请查看您的帖子属性哪一种类型.
1  求助时,表达不清楚自己的问题.
2  求助时,只讲问题的现象,不讲制作思路,不提供与问题相关的情况描述。
3  求助时,不详细提供相关情况和代码,问一点,说一点,就是舍不得一次说完整。
4  求助时,表达清楚了自己的问题,也贴了代码,但是,你的代码与大量舞台上摆放的元件有关,仅看代码也不好猜,不方便测试.如果要回复你的帖子还需要根据代码去摆放和制作代码中涉及的元件.

解决办法:
  详细描述自己的问题,尽可能让大家快速了解你的情况,提供出问题的文件(如果舍不得,请上传演示这个问题的示例文件),让大家能方便的回复你的帖子.

作者: flash023   发布时间: 2011-02-09

已补上原文件,帧频理想是在24,现在mc速度达到了,但一按马上放手时不能只移动一下了

作者: efreshman   发布时间: 2011-02-09

用计时器,假设每50毫秒增加1的值,当超过150毫秒 即为3时,触发  位移的操作 否则不操作

按下和松开中分别启动计时器和结束计时器

作者: HSZZLZL   发布时间: 2011-02-09

我先试试。
十分感谢!

作者: efreshman   发布时间: 2011-02-09