Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 作为if语句条件的实体颜色_Javascript_If Statement_Colors_Conditional Statements - Fatal编程技术网

Javascript 作为if语句条件的实体颜色

Javascript 作为if语句条件的实体颜色,javascript,if-statement,colors,conditional-statements,Javascript,If Statement,Colors,Conditional Statements,我对JavaScript非常陌生。我正在做的任务是一个简单的游戏,使用boxbox作为物理模拟器。 无论如何,我有3个方块,当玩家实体接触它们时,它们会改变颜色。我想显示一条简单的结果消息(“只有一条?再试一次!”之类的)。但是,我不知道颜色值是否可以用作条件。这就是我想到的: function score() { if (gold1.color == "gold" || gold2.color == "gold" || gold3.color == "gold") {world.createE

我对JavaScript非常陌生。我正在做的任务是一个简单的游戏,使用boxbox作为物理模拟器。 无论如何,我有3个方块,当玩家实体接触它们时,它们会改变颜色。我想显示一条简单的结果消息(“只有一条?再试一次!”之类的)。但是,我不知道颜色值是否可以用作条件。这就是我想到的:

function score() {
if (gold1.color == "gold" || gold2.color == "gold" || gold3.color == "gold") {world.createEntity(result, {
        shape: "square",
        x:9,
        y:4,
        width: 3,
        height: 2,
        image: "only1.png",
        imageStretchToFit: true, }
        }
else if (gold1.color == "gold" && gold2.color == "gold" || gold2.color == "gold" && gold3.color == "gold" || gold1.color == "gold" && gold3.color == "gold") {world.createEntity(result, {
        shape: "square",
        width: 3,
        height: 2,
        x:9,
        y:4,
        image: "only2.png",
        imageStretchToFit: true, }
        }
else (gold1.color == "gold" && gold2.color == "gold" && gold3.color == "gold") {world.createEntity(result, {
        shape: "square",
        width: 3,
        height: 2,
        x:9,
        y:4,
        image: "only3.png",
        imageStretchToFit: true, }
        }
}
我不确定这是一个完全错误的方法还是一个语法错误。请帮忙


谢谢。

您应该在浏览器中使用调试器(如果您使用的是chrome,只需按f12)。在您发布的代码执行之前放置断点。你在gold1.color和gold2.color中看到了什么值

根据您给我们的描述,我发现您发布的代码令人困惑。你为什么要做这些检查

一旦有更多信息,我将编辑我的答案

还有一件事,如果其他两个代码块执行,那么第一个代码块看起来会执行,那么为什么还要使用“elseif”语句呢?如果任何颜色为金色,第一个代码块将执行,而其他代码块永远不会执行,因为它们都要求一种或多种颜色为金色。

那么:

function score() {
    var nrGold = 0;

    if (gold1.color == "gold") {
        nrGold++;
    }
    if (gold2.color == "gold") {
        nrGold++;
    }
    if (gold3.color == "gold") {
        nrGold++;
    }

    if (nrGold!==0) {
        world.createEntity(result, {
            shape: "square",
            width: 3,
            height: 2,
            x:9,
            y:4,
            image: "only"+nrGold+".png",
            imageStretchToFit: true
        });
     }
}
注1:json中的最后一个属性不应以逗号结尾(请参见代码中的
imageStretchToFit:true,


注2:world.createEntity函数缺少结束括号

出现了什么错误?我没有收到任何错误。游戏被加载到画布中,当我添加这个函数时,它根本不会加载。什么类型的对象是gold1、gold2和gold3?它们都是相同变量的实例:var block2={name:“block2”、shape:“square”、color:“橙色”、宽度:1、高度:1、密度:20、onImpact:function(entity,force){if(entity.name()==“玩家”){this.color(“gold”);}};你是说你的控制台没有出现任何错误吗?没有,因为
&
的值高于
|
它已经按照这个顺序进行了计算,不需要插入括号。这并没有使游戏崩溃,它加载得很好,但没有使“结果”实体出现。谢谢你的注释,我现在将更加关注!