所以我在开发项目的一部分时遇到了问题,这是我课程的一个游戏。
我想要的代码是当我按空格键时,我想在玩家对象周围出现一个气泡:Birdie然后在3秒后,重新定位到52.05的斧头位置和603.70的位置。< / p>
我在下面的代码背后的逻辑是:我按空格键,每一帧气泡设置到与Birdie相同的位置,并且计数增加1(我在程序的顶部声明变量count为0,这只是它的一部分)。计数每帧增加一个,直到第72帧,其中24帧为3秒。此时,if语句启动并删除事件侦听器,并将气泡的位置设置到所需位置,结束代码。
我知道删除事件侦听器可能会导致程序跳过位置设置代码,我甚至试图将该代码移出语句。代码当前已注释掉,但是当我取消注释并删除if语句中的代码时,我得到相同的结果。
此外,所有这些代码都在一个动作层中,没有使用任何类,并且舞台上的所有对象实例都被正确命名。
stage.addEventListener(KeyboardEvent.KEY_DOWN, copterdeployshield);
function copterdeployshield(event:KeyboardEvent)
{
mcfullshield.visible = false; //THIS LINE IS IRRELEVANT
if (event.keyCode == 32) //If spacebar is pressed
{
//Put the bubble shield on Birdie
addEventListener(Event.ENTER_FRAME, shieldfollowBirdie);
function shieldfollowBirdie(event:Event):void
{
mcbubbleshield.x = mcplayer.x;
mcbubbleshield.y = mcplayer.y;
count = count + 1;
if (count > 72) //72 frames is 3 seconds
{
removeEventListener(Event.ENTER_FRAME, shieldfollowBirdie);
mcbubbleshield.x = 52.05;
mcbubbleshield.y = 603.70;
}
}
/* THE ALTERNATIVE LOCATION OF THE SET POSITION CODE */
//mcbubbleshield.x = 52.05;
//mcbubbleshield.y = 603.70;
}
}