我正在使用HaxeUI制作一个游戏。我使用XML定义设计了一个简单的UI。我需要该按钮来执行与UI元素无关的代码,但是,onClick属性解析的代码在构建界面的区域中看不到任何本地标识符。
如何在不需要避免使用XML定义的情况下解决这一问题?
目前还没有一个方法与您所描述的完全一样,即您用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(见下文(,并创建任何具有id的正确类型的成员变量。
<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>