嘿大家所以我在这里遇到了一些麻烦。已经有一个小时了,无法找到解决方案。
所以我将一个名为_Bunny
的影片剪辑添加到舞台上,如下所示:
_Bunny = new mcBunny;
stage.addChild(_Bunny);
_Bunny.x = (stage.stageWidth / 2) - 225;
_Bunny.y = (stage.stageHeight / 2) - 330;
现在这个_Bunny所做的是在一个循环中从右到左水平移动我在Enter_Frame事件监听器中设置的循环:
private function bunnyView():void
{
_Bunny.x += nBunnySpeed;
if (_Bunny.x >=(stage.stageWidth / 2) + 215)
{
_Bunny.gotoAndStop("leftView");
nBunnySpeed--;
}
if (_Bunny.x <=(stage.stageWidth / 2) - 215)
{
_Bunny.gotoAndStop("rightView");
nBunnySpeed++;
}
}
它的速度是nBunnySpeed
,它等于5.现在,我有另一个函数,我试图将nBunnySpeed
的值改为20 {{1像这样等于1:
nScore
但是产生的错误是兔子在屏幕右侧射击,这是&#34; + x&#34;无论我做什么,这总会发生。
任何人都可以看到我可能做错了吗?我不明白为什么会这样。请帮忙!
答案 0 :(得分:1)
你在这个功能中做了什么
private function bunnyView():void
{
_Bunny.x += nBunnySpeed;
if (_Bunny.x >=(stage.stageWidth / 2) + 215)
{
_Bunny.gotoAndStop("leftView");
nBunnySpeed--;
}
if (_Bunny.x <=(stage.stageWidth / 2) - 215)
{
_Bunny.gotoAndStop("rightView");
nBunnySpeed++;
}
}
检查_Bunny是否在屏幕外。如果是这样,那么nBunnySpeed将是nBunnySpeed - 1.但是,自BunnySpeed = 20,它将是20 + 19 + 18 + 17,仍然是正确的。如果您要将其转为BunnySpeed = -BunnySpeed,它会立即反转并返回。
答案 1 :(得分:1)
你需要某种标志,表明难度已经更新。然后,当你调用updateDifficulty
时,它首先检查是否真的需要现在更新速度,如果没有,它就会返回。但是,如果是,则更新兔子的速度并设置该标志,以便下次该功能不会改变兔子的速度。
var diffUpdated:Boolean=false;
private function updateDifficulty():void
{
if (diffUpdated) return; // here
if (nScore >= 1)
{
//Increase Speed
if (nBunnySpeed<0) nBunnySpeed=-20;
else nBunnySpeed = 20; // retain the direction of bunny's movement
}
diffUpdated=true;
}
现在,无论何时你想要更新你的难度,你都会diffUpdated=false;
并且瞧,兔子的速度将由此更新。但是,为此,您需要两个以上的速度级别,可能需要一个10级,一个50级,一个200级。