这是代码的破解部分:
addSkillButton(stonewall);
从其他函数调用的object
参数运行正常。它转到switch语句,选择正确的大小写,然后执行代码。但是我遇到的问题是使用addSkillButton()
函数。我可以手动输入一个对象,它会正常工作,但我的技能系统是动态的。我需要它根据案例编号拉取对象名称。
如果您查看下面的代码,您会发现技能deepcut
和& stonewall
位于第1位。这些是在用户尝试升级时在子菜单中弹出的技能。这在打开时效果很好,但选择和添加技能变得棘手,因为我不确定如何告诉javascript选择了哪个案例编号,因此在位置1中选择该对象名称。
这就是我想要它说或做的事情:
addSkillButton(Get Object in Position 1 from Case Number)
这是我的代码:
function radialSelector(object){ switch (object){ case strike: radialSubMenuSkills("position1", deepcut); radialSubMenuSkills("position2", balancedstrike); radialSubMenuSkills("position3", fury); break; case defend: radialSubMenuSkills("position1", stonewall); radialSubMenuSkills("position2", digin); radialSubMenuSkills("position3", holdtheline); break; default: console.log("radialSelector() has set its switch statement to default") } $('#upgradeSkillsBar').on('click', '#position1', function(){ removeSkillButton(object); addSkillButton(stonewall); removeRadialSubMenu(); }); }
答案 0 :(得分:1)
只需使用数组。
var skills;
switch(object) {
case strike:
skills = [deepcut, balancedstrike, fury];
break;
case defend:
skills = [stonewall, digin, holdtheline];
break;
default:
throw new Error("Invalid condition");
}
for( var i=0, l=skills.length; i<l; i++) {
radialSubMenuSkills("position"+(i+1), skills[i]);
}
$("#upgradeSkillsBar").on("click", "#position1", function() {
removeSkillButton(object);
addSkillButton(skills[0]);
removeRadialSubMenu();
});