Javascript 比较值-无法访问对象的name属性
我正在尝试修改一个javascript游戏。它有各种对象,如精灵、瓷砖、物品等。 到目前为止,我已经能够比较一个精灵的Javascript 比较值-无法访问对象的name属性,javascript,Javascript,我正在尝试修改一个javascript游戏。它有各种对象,如精灵、瓷砖、物品等。 到目前为止,我已经能够比较一个精灵的名称值来改变与它交互时产生的声音 即: 当我尝试与项目交互时,问题就出现了。相同的代码对它们不起作用 after('onInventoryChanged', function () { //does not work if (item[id].name === "smokes"){ sounds.lighter(); } els
名称
值来改变与它交互时产生的声音
即:
当我尝试与项目交互时,问题就出现了。相同的代码对它们不起作用
after('onInventoryChanged', function () { //does not work
if (item[id].name === "smokes"){
sounds.lighter();
} else {
sounds.birdrobin();
}
});
项目和精灵之间的唯一区别是,精灵是唯一的,不能有两个具有相同名称
属性的精灵。另一方面,您可以拥有任意多个具有相同名称的项目
不过我还是被弄糊涂了,因为精灵和物品对象都是由相同的代码“生成”的,我应该能够访问物品中的name变量
function parseItem(lines, i) {
var id = getId(lines[i]);
var drwId = null;
var name = null;
//item data
item[id] = {
id : id,
drw : drwId, //drawing id
col : colorIndex,
dlg : dialogId,
name : name
};
return i;
}
function parseSprite(lines, i) {
var id = getId(lines[i]);
var drwId = null;
var name = null;
//sprite data
sprite[id] = {
id : id,
drw : drwId, //drawing id
col : colorIndex,
dlg : dialogId,
inventory : startingInventory,
name : name
};
return i;
}
任何帮助都是欢迎的,因为过去几天我一直被困在这里
如果我能提供任何其他信息,请随时询问。我只是不想从一开始就把问题搞得一团糟
编辑1:
item[id].name
用于在画布上绘制对象,因此我应该能够访问它
for (id in item) {
worldStr += "ITM " + id + "\n";
worldStr += serializeDrawing( "ITM_" + id );
if (item[id].name != null && item[id].name != undefined) {
/* NAME */
worldStr += "NAME " + item[id].name + "\n";
}
if (item[id].dlg != null) {
worldStr += "DLG " + item[id].dlg + "\n";
}
if (item[id].col != null && item[id].col != undefined && item[id].col != 2) {
/* COLOR OVERRIDE */
worldStr += "COL " + item[id].col + "\n";
}
worldStr += "\n";
}
编辑2:
我取得了一点“进步”。现在,onInventoryChange
确实会发出声音,但不是正确的声音。我有一件商品名为smokes,我有一件商品名为beer。产生的声音在else
部分,即使我与烟和啤酒互动时也是如此
after('onInventoryChanged', function () {
if (item.name === "smokes"){
sounds.lighter();
} else if (item.name === "beer") {
sounds.bottleCap();
} else {
sounds.birdrobin();
}
});
谢谢您所说的“无法访问名称”属性到底是什么意思?console.log(项[id].name)
输出什么?是否未定义
?可能item[id]
或id
本身没有定义。还有一件事,我没有看到在的回调函数之后,这些项是的参数,它们是全局定义的吗?@GhassenLouhaichi我无法访问控制台日志(F12不工作)。因为它是编译的。我所说的不能访问name属性的意思是,当我进行比较时,实际上没有声音出来(甚至没有声音)。函数本身可以工作,因为如果我删除条件语句,只添加音频文件,它就会播放。
之后的是一个“钩子”。这个游戏的基本工作原理是,你在浏览器中制作一张地图,上面有精灵项目等,然后下载一个html文件到你的电脑上(这就是游戏)。然后,您需要编辑html文件,添加一个“mod”,将操作(例如,onPlayerMoved
)与您输入到html文件夹的声音文件挂钩。您是否选中了item.name,您正在获取的onInventoryChanged?我想应该是项目[id]。名称
after('onInventoryChanged', function () {
if (item.name === "smokes"){
sounds.lighter();
} else if (item.name === "beer") {
sounds.bottleCap();
} else {
sounds.birdrobin();
}
});