这真的很烦人,我已经尝试了所有方法,但无法解决这个问题。
private function gameLoop(e:Event):void
{
movement();
trace(randomItem);
if (randomItem == "pomme")
{
updateScore();
}
if (timerText.text == "0")
{
stage.removeChild(player);
stage.removeEventListener(Event.ENTER_FRAME, gameLoop);
stage.removeEventListener(KeyboardEvent.KEY_DOWN, keyDown);
stage.removeEventListener(KeyboardEvent.KEY_UP, keyUp);
this.gotoAndStop(3)
endFrame();
}
}
此代码跟踪randomItem。我测试了它,跟踪输出表示randomItem是" pomme"。
这意味着分数应该有更新(跟踪命令:"分数已更新");
但它没有,这种方法适用于我正在进行的其他游戏,但这里有什么重要的想法?
private var colourArray:Array = new Array("pomme ","banane ","laitue ","concombre ","miel");
顶部代码是一个数组,randomItem将它与数组进行比较。
private var colourArray:Array = new Array("pomme ","banane ","laitue ","concombre ","miel");
private var len:int = colourArray.length - 1;
private var rand:int;
private var randomItem:String;
rand = Math.floor(Math.random() * len);
randomItem = colourArray[rand];
trace(randomItem);
baloonText.text = "Teddy wants to eat " + randomItem;
答案 0 :(得分:6)
colourArray中的条目在末尾包含一个空格 如果你从这个数组中填充randomItem,那么" pomme" !=" pomme"并且这种差异不会立即显现出来。
答案 1 :(得分:1)
该项目要么不是“pomme”,要么在没有通知的情况下调用updateScore
:)
最佳做法是将跟踪语句放在 if子句内以及updateScore
函数内。从这个角度来看,您的代码看起来很好。
编辑:提一下,你的随机函数不能正常工作,因为Math.random()
返回一个伪随机数n,其中0 <= n&lt; 1 (来自参考)。
因此,您的数组长度现为5
,len
属性降至4
,Math.Random() * len
返回3.99
的最大值(0.999 * 4),当你floor
它失效时,意味着你可以得到的最大值是3
。但你有4个元素.. :))