是否可以动态更新UI信息?

时间:2016-08-10 20:15:05

标签: javascript phaser-framework

道歉,如果我的头衔并没有真正抓住我试图提出/完成的内容,但希望我的描述能够实现。

为了使这个示例保持基本,我在屏幕上有许多文本实例,这些实例需要至少每秒更新一次,并提供新信息。我当前正在使用以下代码创建UI:

function BuildItemList() {
var iButtonCount = 0;

for (var i in CORE.Items) {
    if (CORE.Items[i].Display) {
        var ItemStyle = ItemCanAffordStyle;

        if (!CanAfford(YAROS.Items[i].Name))
            ItemStyle = ItemCannotAffordStyle;

        var ItemButton = sys.add.button((800 - 205), (25 + (65 * iButtonCount)), 'ItemButton', this.BuyItem.bind(this, CORE.Items[i].Name), this);

        if (HasPrerequisites(CORE.Items[i].Name))
            sys.add.text(ItemButton.x + 10, ItemButton.y + 10, CORE.Items[i].DisplayName, ItemStyle);
        else
            sys.add.text(ItemButton.x + 10, ItemButton.y + 10, '???', ItemStyle);

        if (CORE.Items[i].Versioned)
            sys.add.text((ItemButton.x + ItemButton.width) - 30, ItemButton.y + 10, 'v' + YAROS.Items[i].UserOwns, ItemStyle);
        else
            sys.add.text((ItemButton.x + ItemButton.width) - 30, ItemButton.y + 10, YAROS.Items[i].UserOwns, ItemStyle);

        var iCostsCount = 0;
        var sResourceCosts = CORE.Items[i].BuyResources.split(',');
        var sResourceCostsAmount = CORE.Items[i].BuyUnits.toString().split(',');

        for (var x = 0; x < sResourceCosts.length; x++) {
            var ItemDetailsStyle = ItemDetailsCanAffordStyle;

            if (sResourceCostsAmount[x] > CORE.Resources[sResourceCosts[x]].CurrentCount)
                ItemDetailsStyle = ItemDetailsCannotAffordStyle;

            sys.add.image(ItemButton.x + (10 + (60 * iCostsCount)), ItemButton.y + 35, CORE.Resources[sResourceCosts[x]].ImageName);
            sys.add.text(ItemButton.x + (30 + (60 * iCostsCount)), ItemButton.y + 37, parseFloat(parseFloat(sResourceCostsAmount[x]).toFixed(CORE.Resources[sResourceCosts[x]].DecimalPlaces)), ItemDetailsStyle);
            iCostsCount++;
        }

        iButtonCount++;
        }
    }
}

上面的代码确实有效,但我很快意识到,当我想要做的就是更新我已经创建的信息时,这会创建所有元素。

最后我的问题是,我是否需要创建每个元素,将该元素分配给变量,然后单独使用&#34;更新&#34;函数为变量赋值?

我不需要帮助重写它来做到这一点,但我是否正确思考?或者还有其他/正确的方法吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

在离开代码并回来之后(在阅读了Mike C&#39的评论之后),我一直在努力解决这个问题。

我要按照屏幕上显示的顺序将所有需要的按钮元素分配给一个数组,然后我将遍历该数组并更新信息。

这似乎是实现这一目标最明智的方式。