0

我需要一些帮助。我这里有这段代码,它会发射子弹,但每次我按下键时,子弹都会越来越快。这是我正在处理的部分...

stage.addEventListener(KeyboardEvent.KEY_DOWN, kDown);
stage.addEventListener(KeyboardEvent.KEY_UP, kUp);
stage.addEventListener(Event.ENTER_FRAME, moveChar);

//character functionality keys//
function kDown(event:KeyboardEvent):void
{
var mainSpeed:int = 5;
    if (event.keyCode == 88){
        gun_mc.gotoAndPlay(2);
        BlueBullet_mc.x = gun_mc.x;
        BlueBullet_mc.y = gun_mc.y;
        addChild(BlueBullet_mc);
        BlueBullet_mc.addEventListener(Event.ENTER_FRAME,moveBlueBullet);
        }
        function moveBlueBullet(e:Event):void{
            e.target.y -=5;
            if (e.target == 0){
                e.target.removeEventListener(Event.ENTER_FRAME,moveBlueBullet);
                removeChild(MovieClip(e.target));

            }

        }
4

1 回答 1

0

子弹跑得更快,因为每次你按下按钮,你都在添加一个事件监听器。所以当你第一次点击它时,它会移动 -5 px/frame。下一次,它每帧触发两次,分别是 -10,然后是 -15,依此类推。为避免这种情况,您要么希望在按下按钮时删除事件监听器,要么使用布尔值来存储对象当前是否正在移动。

于 2013-11-11T15:09:05.807 回答