Javascript 作为if语句条件的实体颜色
我对JavaScript非常陌生。我正在做的任务是一个简单的游戏,使用boxbox作为物理模拟器。 无论如何,我有3个方块,当玩家实体接触它们时,它们会改变颜色。我想显示一条简单的结果消息(“只有一条?再试一次!”之类的)。但是,我不知道颜色值是否可以用作条件。这就是我想到的: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
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”);}};你是说你的控制台没有出现任何错误吗?没有,因为
&
的值高于|
它已经按照这个顺序进行了计算,不需要插入括号。这并没有使游戏崩溃,它加载得很好,但没有使“结果”实体出现。谢谢你的注释,我现在将更加关注!