游戏JavaScript / JSON链接文本框

时间:2014-06-03 00:18:29

标签: javascript html json game-development

我正在开发游戏并遇到一些问题。现在我有一个文本框,显示说我遇到了继续下一个级别。当我遇到它时,下一级加载完美,那部分效果很好。现在我试图将其更改为文本框显示的位置,并且有两个指向两个不同级别的链接。游戏中有一些项目,我想要做的是让玩家在有一个项目的情况下进入一个级别,如果他没有项目则进入另一个级别。我会通过给项目赋值,然后在与文本框碰撞时检查该值是否在库存中。所以主要的问题是,是否可以将两个节点链接到一个文本框?如果是这样,我该怎么做呢?以下是我的一些代码:

来自我的.js文件:

function Choice(scene, text, image, width, height, z) {
// Static textbox object that holds the text of a choice
tChoice = new TextBox(scene, image, width, height);
tChoice.text = text;
tChoice.choiceNumber = 0;
tChoice.z = z;

return tChoice;
} // end choice

来自我的.html文件:

function checkChoiceCollisions() {
// If a player collides with a choice, that choice's level will be displayed.
for (var i = 0; i < choices.length; i ++) {
    if(player.collidesWith(choices[i])) {
        player.visible = false;
        switchNode(i);
    } // end if
} // end for
} // end checkChoiceCollisions

JSON:

"options":[{"text":"Run into me to continue\nto the next level","link":"nodes/nextLevel.txt","width":"150", "height":"75", "x":"800", "y":"250"}]

感谢您的帮助!!

编辑:我忘了添加这部分代码..

function makeChoices() {
    // Makes the choice textboxes defined by the level.
        for (var i = 0; i < choices.length; i ++) {
        // Destroy the previous level's choice boxes.
            var index = spriteList.list.indexOf(choices[i]);
            spriteList.list.splice(index, 1);
        } // end for
        choices = [];

        for (var i = 0; i < curNode.options.length; i ++) {
        // Create each choice box defined by the level.
            var width = parseInt(curNode.options[i].width);
            var height = parseInt(curNode.options[i].height);
            var x = parseInt(curNode.options[i].x);
            var y = parseInt(curNode.options[i].y);

            var choice = new Choice(scene, curNode.options[i].text, null, width, height, 2);
            choice.setPosition(x, y);
            choice.fitText();
            choices.push(choice);

            if (!checkChoiceRequirements(i)) {
            // Only display a choice if its requirements are met.
                choices[i].visible = false;
            } // end if
        } // end for
    } // end makeChoices

1 个答案:

答案 0 :(得分:0)

留下这个问题,因为我没有评论......

因为你的函数“Choice”是大写的,所以我希望它是一个伪经典的构造函数,然后默认返回它隐含的'this'对象。但相反,你会回来'tChoice',这可能会产生意想不到的后果。

您还要为'tChoice'对象定义值,而不通过'var'关键字声明它。您打算访问名为'tChoice'的全局变量吗?

否则,我不确定你究竟要问的是什么“可以将两个节点链接到一个文本框?”访问对象似乎是一个很好的方法。你收到错误了吗?你能把你的代码发布到Fiddle / Plunkr / JS_Bin吗?