声明为现有数组不起作用
Declaring as an existing array doesn't work
在您阅读此代码并精疲力尽之前,请先了解它是一个名为 p5.js
的开源 JavaScript 库
我有基本包,没有附加包。看看这个...
var weapons = {
//[WEAPON NAME]: [accuracy,repeat,recoil,recoilmax,recoil-recovery,damage,firerate,reloadspeed],
M4A1: [10, 10, 0.2, 5, 1],
//primary: weapons.M4A1,//ERROR
//secondary: weapons.M4A1,//ERROR
equipped: weapons.M4A1,
};
var inventory = {
accuracy: weapons.M4A1[0],
accuracyREF: 10,
recoil: 0.2,
recoilMAX: 3,
recoilRecovery: 1,
damage: 1,
fireRate: 1,
};
显示空白屏幕,直到我删除声明 weapons.equipped
的行
我还尝试使用如下所示的 SPLICE p5.JS 语法同样适用于 arrayCopy()
var weapons = {
//[WEAPON NAME]: [accuracy,repeat,recoil,recoilmax,recoil-recovery,damage,firerate,reloadspeed],
M4A1: [10, 10, 0.2, 5, 1],
//primary: weapons.M4A1,//ERROR
//secondary: weapons.M4A1,//ERROR
equipped: [0,0,0,0,0],
};
splice(weapons.M4A1, equipped, 0);
var inventory = {
accuracy: weapons.M4A1[0],
accuracyREF: 10,
recoil: 0.2,
recoilMAX: 3,
recoilRecovery: 1,
damage: 1,
fireRate: 1,
};
这对我的游戏来说是必不可少的,如果做不到,我将不得不放弃它
var weapons
失败,因为您试图将其属性之一分配给自身,但它尚不存在。因此 var inventory
失败,因为 weapons
由于第一个错误而未定义。
要了解发生了什么,请从这里开始:
var weapons = {
M4A1: [10, 10, 0.2, 5, 1],
equipped: weapons.M4A1 // <-- weapons.M4A1 must be determined first
};
// weapons === undefined
在实例化var weapons
之前,JS需要处理weapons.M4A1
的值才能赋值给equipped
。问题是 weapons
还不存在。
接下来您要尝试实例化 inventory
。
// remember, weapons === undefined
var inventory = {
accuracy: weapons.M4A1[0], // again, weapons.M4A1[0] must be determined
accuracyREF: 10,
...
};
// inventory === undefined
...因此,inventory
也无法实例化。
尝试 #2:splice(weapons.M4A1, equipped, 0);
p5/splice 声明 splice
适用于数组,而不适用于对象(以及您的实现的其他问题)。
你能做到吗?
var weapons = {
M4A1: [10, 10, 0.2, 5, 1],
equipped: [10, 10, 0.2, 5, 1]
};
var inventory = {
accuracy: weapons.M4A1[0],
...
};
还是这个?
var weapons = {
M4A1: [10, 10, 0.2, 5, 1],
equipped: [0,0,0,0,0]
};
weapons.equipped = weapons.M4A1;
var inventory = {
accuracy: weapons.M4A1[0],
...
};
使用 getter functions 的另一种解决方案。有关错误发生原因的解释,请查看@bloodyKnuckles 的回答。
var weapons = {
//[WEAPON NAME]: [accuracy,repeat,recoil,recoilmax,recoil-recovery,damage,firerate,reloadspeed],
M4A1: [10, 10, 0.2, 5, 1],
get primary() {
return weapons.M4A1
},
get secondary() {
return weapons.M4A1
},
get equipped() {
return weapons.M4A1
},
};
var inventory = {
accuracy: weapons.M4A1[0],
accuracyREF: 10,
recoil: 0.2,
recoilMAX: 3,
recoilRecovery: 1,
damage: 1,
fireRate: 1,
};
console.log("weapons", weapons);
console.log("inventory", inventory);
在您阅读此代码并精疲力尽之前,请先了解它是一个名为 p5.js
的开源 JavaScript 库我有基本包,没有附加包。看看这个...
var weapons = {
//[WEAPON NAME]: [accuracy,repeat,recoil,recoilmax,recoil-recovery,damage,firerate,reloadspeed],
M4A1: [10, 10, 0.2, 5, 1],
//primary: weapons.M4A1,//ERROR
//secondary: weapons.M4A1,//ERROR
equipped: weapons.M4A1,
};
var inventory = {
accuracy: weapons.M4A1[0],
accuracyREF: 10,
recoil: 0.2,
recoilMAX: 3,
recoilRecovery: 1,
damage: 1,
fireRate: 1,
};
显示空白屏幕,直到我删除声明 weapons.equipped
的行我还尝试使用如下所示的 SPLICE p5.JS 语法同样适用于 arrayCopy()
var weapons = {
//[WEAPON NAME]: [accuracy,repeat,recoil,recoilmax,recoil-recovery,damage,firerate,reloadspeed],
M4A1: [10, 10, 0.2, 5, 1],
//primary: weapons.M4A1,//ERROR
//secondary: weapons.M4A1,//ERROR
equipped: [0,0,0,0,0],
};
splice(weapons.M4A1, equipped, 0);
var inventory = {
accuracy: weapons.M4A1[0],
accuracyREF: 10,
recoil: 0.2,
recoilMAX: 3,
recoilRecovery: 1,
damage: 1,
fireRate: 1,
};
这对我的游戏来说是必不可少的,如果做不到,我将不得不放弃它
var weapons
失败,因为您试图将其属性之一分配给自身,但它尚不存在。因此 var inventory
失败,因为 weapons
由于第一个错误而未定义。
要了解发生了什么,请从这里开始:
var weapons = {
M4A1: [10, 10, 0.2, 5, 1],
equipped: weapons.M4A1 // <-- weapons.M4A1 must be determined first
};
// weapons === undefined
在实例化var weapons
之前,JS需要处理weapons.M4A1
的值才能赋值给equipped
。问题是 weapons
还不存在。
接下来您要尝试实例化 inventory
。
// remember, weapons === undefined
var inventory = {
accuracy: weapons.M4A1[0], // again, weapons.M4A1[0] must be determined
accuracyREF: 10,
...
};
// inventory === undefined
...因此,inventory
也无法实例化。
尝试 #2:splice(weapons.M4A1, equipped, 0);
p5/splice 声明 splice
适用于数组,而不适用于对象(以及您的实现的其他问题)。
你能做到吗?
var weapons = {
M4A1: [10, 10, 0.2, 5, 1],
equipped: [10, 10, 0.2, 5, 1]
};
var inventory = {
accuracy: weapons.M4A1[0],
...
};
还是这个?
var weapons = {
M4A1: [10, 10, 0.2, 5, 1],
equipped: [0,0,0,0,0]
};
weapons.equipped = weapons.M4A1;
var inventory = {
accuracy: weapons.M4A1[0],
...
};
使用 getter functions 的另一种解决方案。有关错误发生原因的解释,请查看@bloodyKnuckles 的回答。
var weapons = {
//[WEAPON NAME]: [accuracy,repeat,recoil,recoilmax,recoil-recovery,damage,firerate,reloadspeed],
M4A1: [10, 10, 0.2, 5, 1],
get primary() {
return weapons.M4A1
},
get secondary() {
return weapons.M4A1
},
get equipped() {
return weapons.M4A1
},
};
var inventory = {
accuracy: weapons.M4A1[0],
accuracyREF: 10,
recoil: 0.2,
recoilMAX: 3,
recoilRecovery: 1,
damage: 1,
fireRate: 1,
};
console.log("weapons", weapons);
console.log("inventory", inventory);