0

如果我创建一个名为“Level 0”的按钮,并且 onmousedown 我让它运行 learnSkill(3),它只会将技能 [3].Value 增加到 1,然后它会点击但什么也不做,为什么?

我正在尝试编写技能树,由于此类问题,我还没有走得很远,所以它大部分是空的。

    var 技能 = 新数组();

    功能技能(值,名称,类型,层,列,信息,要求){
        this.Value = 价值;
        this.Name = 名称;
        this.Type = 类型;
        this.Tier = 层;
        this.Column = 列;
        this.Info = 信息;
        this.Req = 要求;
        //技能[id].Req
    }

    函数 SkillReq(id, amount, reqby) {
        这个.Id = id;
        this.Amount = 金额;
        this.By = reqby;
        //技能[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));

    函数可以学习(id){
        警报(“在可以学习”);
        可以学习=真;
        返回可以学习;
    }

    函数canUnlearn(id){

    }

    功能学习技能(ID){
        警报(“身份证:”+身份证);
        如果(!canLearn(id)){
            alert("无法学习");
            返回;
        }
        // 增加当前技能值
        技能[id].Value++;
        警报(技能[id].Value);
        // 总SP--; 减少totalSP,必须先声明
        // 更新按钮以显示新级别的技能值
        document.getElementById(id).value = "等级"+skill[id].Value;
    }

    函数unlearnSkill(id){
        如果(!canUnlearn(id)){
            返回;
        }
    }

    功能 onClickTalent(id) {

    }

    函数 rmbDown(e)
    {
        var isRMB = false;
        e = e || 窗口.事件;
        如果(例如哪个)
            isRMB = (e.which == 3);
        else if (e.button)
            isRMB = (e.button == 2);
        返回是RMB;
    }

4

2 回答 2

0

我不确定您要做什么,但这是一个问题:

function canLearn(id) {
    alert("in canlearn");
    canLearn = true;
    return canLearn;
}

该函数将在第一次调用时“自毁”,因为您将全局符号“canLearn”设置为true. 麻烦的是,“canLearn”已经被使用了——作为那个函数的名字!因此,后续调用“canLearn”的尝试将失败,因为它的值不再是函数对象。

于 2012-09-02T20:48:34.307 回答
0

您正在覆盖其中的canLearn函数,canLearn分配给 true 的标识符是函数本身,要在函数范围内创建新变量,请使用 var 关键字

function canLearn(id) {
    alert("in canlearn");
    var canLearn = true;
    return canLearn;
}
于 2012-09-02T20:48:49.137 回答