首页 > 解决方案 > 声明为现有数组不起作用

问题描述

在您阅读此代码并感到筋疲力尽之前,只需知道它是一个名为 p5.js 的开源 JavaScript 库

https://p5js.org/reference/

我有基本包,没有附加组件。看看这个...

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,
};

显示一个空白屏幕,直到我摆脱声明武器的行。装备

我还尝试在 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,
};

这对我的游戏至关重要,如果不能做到,我将不得不放弃它

标签: javascriptprocessingp5.js

解决方案


另一种使用getter 函数的解决方案。要了解为什么会出现错误,请查看@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);


推荐阅读