尽管跟踪命令为真,但if语句仍无效

时间:2014-06-10 03:02:42

标签: actionscript-3 flash

这真的很烦人,我已经尝试了所有方法,但无法解决这个问题。

    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;

2 个答案:

答案 0 :(得分:6)

colourArray中的条目在末尾包含一个空格 如果你从这个数组中填充randomItem,那么" pomme" !=" pomme"并且这种差异不会立即显现出来。

答案 1 :(得分:1)

该项目要么不是“pomme”,要么在没有通知的情况下调用updateScore:)

最佳做法是将跟踪语句放在 if子句内以及updateScore函数内。从这个角度来看,您的代码看起来很好。

编辑:提一下,你的随机函数不能正常工作,因为Math.random() 返回一个伪随机数n,其中0 <= n&lt; 1 (来自参考)。

因此,您的数组长度现为5len属性降至4Math.Random() * len返回3.99的最大值(0.999 * 4),当你floor它失效时,意味着你可以得到的最大值是3。但你有4个元素.. :))