如果我创建了一个名为“Level 0”的按钮,并且我已经运行了LearnSkill(3)它只会增加技能[3]。值为1,然后它会选择一个点击但什么也不做,为什么?
我正在尝试编写一个技能树,我没有因为这样的问题而走得很远所以它基本上是空的。
var skill = new Array(); function Skill(value, name, type, tier, column, info, requirement) { this.Value = value; this.Name = name; this.Type = type; this.Tier = tier; this.Column = column; this.Info = info; this.Req = requirement; //skill[id].Req } function SkillReq(id, amount, reqby) { this.Id = id; this.Amount = amount; this.By = reqby; //skill[id].Req.Id //skill[id].Req.Amount //skill[id].Req.By } skill[1] = new Skill(0, "Unholy Sphere", "Tree 2", 0, 1, new Array(), new SkillReq(0, 0, 3)); skill[3] = new Skill(0, "Dark Circle", "Tree 2", 1, 0, new Array(), new SkillReq(1, 3, 0)); function canLearn(id) { alert("in canlearn"); canLearn = true; return canLearn; } function canUnlearn(id) { } function learnSkill(id) { alert("id: "+id); if (!canLearn(id)) { alert("cannot learn"); return; } // Increase current skill value skill[id].Value++; alert(skill[id].Value); // totalSP--; Decrease totalSP, must declare first // Update button to show new level of skill value document.getElementById(id).value = "Level "+skill[id].Value; } function unlearnSkill(id) { if (!canUnlearn(id)) { return; } } function onClickTalent(id) { } function rmbDown(e) { var isRMB = false; e = e || window.event; if (e.which) isRMB = (e.which == 3); else if (e.button) isRMB = (e.button == 2); return isRMB; }
答案 0 :(得分:0)
我不确定你要做的是什么,但这里有一个问题:
function canLearn(id) {
alert("in canlearn");
canLearn = true;
return canLearn;
}
该函数将在第一次被调用时“自我解析”,因为您将全局符号“canLearn”设置为true
。麻烦的是,“canLearn”已经被使用 - 作为该功能的名称!因此,后续尝试调用“canLearn”将失败,因为它的值不再是函数对象。
答案 1 :(得分:0)
您正在覆盖其中的canLearn
函数,您指定为true的canLearn
标识符是函数本身,要在函数作用域中创建新变量,请使用var关键字
function canLearn(id) {
alert("in canlearn");
var canLearn = true;
return canLearn;
}