AS3,子弹代码

时间:2013-11-11 04:22:41

标签: actionscript

我需要一些帮助。我在这里有这个代码并且它射击子弹但是每次按下按键时,子弹每次都会越来越快。这是我正在努力的部分......

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));

            }

        }

1 个答案:

答案 0 :(得分:0)

子弹的速度越来越快,因为每次按下按钮,都会添加一个eventlistener。因此,当您第一次单击它时,它移动-5 px /帧。下一次,它每帧触发两次,-10,然后是-15,依此类推。要避免这种情况,您要么在按下按钮时删除eventlistener,要么使用布尔值来存储对象当前是否正在移动。