Создание встроенного в XML компонента вызывает неинтерфейсный код - PullRequest
0 голосов
/ 13 декабря 2018

Я делаю игру, используя HaxeUI.Я разработал простой пользовательский интерфейс с использованием определения XML.Мне нужна кнопка для выполнения кода, который не связан с элементами пользовательского интерфейса, однако проанализированный код свойства onClick не видит локальных идентификаторов, определенных в области, в которой создается интерфейс.

Какобойти это без необходимости воздерживаться от использования определения XML?

1 Ответ

0 голосов
/ 14 декабря 2018

В настоящее время не существует метода, точно такого, как вы его описываете, в том смысле, что вы определяете свой обработчик кликов в XML и который ссылается на haxe-код. Существует открытая проблема, которая, по сути, такова, как вы описываете: https://github.com/haxeui/haxeui-core/issues/196 -и я думаю, что это будет полезным дополнением.

Существует, однако, этот метод (с помощью макросов сборки для создания пользовательского компонента):

@:build(haxe.ui.macros.ComponentMacros.build("myxml.xml"))
class MySomething extends Box {
    public function new() {
        super();
        myButton.onClick = function(e) {
            myLabel.text = "Clicked";
        }
    }
}

Этот макрос берет ваш xml (см. Ниже) и создает правильно набранные переменные-члены из всего, что имеетИдентификатор.

<vbox>
    <button id="myButton" />
    <label id="myLabel" />
</vbox>

Это может затем использоваться свободно в коде или XML:

Screen.instance.addComponent(new MySomething());
Screen.instance.addComponent(new MySomething());
Screen.instance.addComponent(new MySomething());

или

<vbox>
    <mysomething />
    <mysomething />
    <mysomething />
</vbox>
...