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

Is it possible to update UI information dynamically?

如果我的标题没有真正抓住我想要表达的本质,我深表歉意ask/accomplish但希望我的描述能够。

为了保持这个例子的基础,我在屏幕上有很多文本实例,这些文本需要至少每秒更新一次以包含新信息。我目前正在使用以下代码创建 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++;
        }
    }
}

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

所以最后我的问题是,我是否需要创建每个元素,将该元素分配给一个变量,然后有一个单独的 "Update" 函数来为变量分配新值?

我不需要帮助 re-writing 它来执行此操作,但是我的想法是否正确?或者有 another/proper 的方法吗?

谢谢。

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

我将把所有需要的按钮元素分配给一个数组,按照它们在屏幕上出现的顺序,然后循环遍历数组并更新信息。

这似乎是实现此目的最明智的方法。