Извинения, если мой заголовок действительно не поймает суть того, что я пытаюсь спросить/выполнить, но, надеюсь, мое описание будет.Возможно ли обновлять информацию пользовательского интерфейса динамически?
Чтобы сохранить базовое значение для этого примера, у меня есть многочисленные текстовые экземпляры на экране, они должны обновляться не реже одного раза в секунду с новой информацией. Я в настоящее время создание пользовательского интерфейса, используя следующий код:
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++;
}
}
}
Приведенный выше код сделал работу, однако я быстро понял, что это создает все элементы друг над другом, когда все, что я хочу сделать, это обновление информации я уже создан.
Итак, наконец, мой вопрос: нужно ли мне создавать каждый элемент, назначать этот элемент переменной и затем иметь отдельную функцию «Обновить», чтобы назначать новые значения переменным?
Мне не нужна помощь в повторном написании этого, но я правильно думаю? Или есть другой/правильный способ сделать это?
спасибо.
Вы видели пример Phaser на [как обновить текст?] (Http://phaser.io/examples/v2/text/update-text) –
@MikeC У меня есть это, я думал о том, как я возможно, придется это сделать, однако, поскольку у меня есть 3 элемента текста внутри каждой кнопки и 9 кнопок, я думал, что будет какой-то способ перебирать каждый текстовый элемент, а не жестко кодировать каждую метку переменной, которую он должен зацикливать. – MrDKOz
Несомненно. Поместите их в [массив] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array), затем выполните цикл через массив. –