我需要一些帮助。我在这里有这个代码并且它射击子弹但是每次按下按键时,子弹每次都会越来越快。这是我正在努力的部分......
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));
}
}
答案 0 :(得分:0)
子弹的速度越来越快,因为每次按下按钮,都会添加一个eventlistener。因此,当您第一次单击它时,它移动-5 px /帧。下一次,它每帧触发两次,-10,然后是-15,依此类推。要避免这种情况,您要么在按下按钮时删除eventlistener,要么使用布尔值来存储对象当前是否正在移动。