如何从对象内的对象中获取值

时间:2019-03-14 13:49:29

标签: javascript object rpgmakermv

关于这件事,我正在编写脚本,遇到了一个问题,就是我什么地方都没看,而且我还没有尝试过修复它,这是我要做的事情的简要介绍:

我正在为我正在制作的游戏中的战斗系统编程一个管理器,它会创建一个具有某些属性的对象,并具有其所需的信息,以便能够检查状态是否仍然有效。这是对象的结构以及创建对象的函数:

function state(sId, mId, trns, trn){ 
    this.stateId = sId
    this.memberId = mId
    this.turns = trns
    this.turn = trn
}

function makeState(n, sId, mId, trns, trn) {
    var states = {}
    for (var i = 0; i < n; ++i) {
        states[i] = new state(sId, mId, trns, trn)
    }
    return states
}

这是每当将状态添加到战斗成员之一时在游戏引擎中调用的函数($ gameVariables.value(197)返回沿1 * 1 * 1 * 1 * 1的内容,$ gameVariables.value(196)返回大于0的数字):

    $.updateStates = function() {
    if ($gameVariables.value(197) != 0){
        var listCreated = false;
        var unformatedData = $gameVariables.value(197);
        var stateData = unformatedData.split("*");
        console.log(stateData);
    }

    if (listCreated == false){
        if ($gameVariables.value(197) != 0){
            var statesobj = makeState(stateData[0], stateData[1], stateData[2], stateData[3], stateData[4]);
            $gameVariables.setValue(197, 0);
            listCreated = true;
            console.log(statesobj);
        }
    } else {
        if ($gameVariables.value(197) != 0){
            statesobj.push(makeState(stateData[0], stateData[1], stateData[2], stateData[3], stateData[4]));
            $gameVariables.setValue(197, 0);
        }

        for (Object.entries(statesobj)) { //check/remove expired states
            console.log(p);
            if ((p.turns + p.turn) <= $gameVariables.value(196)){
                $gameParty.members()[p.memberId - 1].removeState(p.stateId);
                statesobj.splice(p, 1);
            }
        }
    }
};

note “检查/删除过期状态”完全被弄乱了,我已经尝试了好几种方法,但是它不起作用,因此仅供参考,因为那部分代码P是的for(...)部分当前正在查看的主要对象中的当前对象。)

问题是“检查/删除过期状态”根本不起作用,而且我还无法弄清楚如何使它起作用,有关删除状态的部分起作用了,仅仅是代码不会遍历statesobj对象内的每个对象并从该对象内的每个状态对象获取所需的值,你们中的任何人都知道我该怎么做? (引擎是rpg maker mv,但它使用的是javascript。)

0 个答案:

没有答案