我尝试同时使用 HaxeUI 和 HaxeFlixel,但我得到的是白色背景上的 HaxeUI 界面,覆盖了下面的所有内容。此外,即使可以在某种程度上使 HaxeUI 和 HaxeFlixel 一起工作,当 HaxeFlixel 中的状态发生变化时,如何更改 HaxeUI 的 UI 也不清楚。这是我使用的代码:
private function setupGame():Void {
Toolkit.theme = new GradientTheme();
Toolkit.init();
var stageWidth:Int = Lib.current.stage.stageWidth;
var stageHeight:Int = Lib.current.stage.stageHeight;
if (zoom == -1) {
var ratioX:Float = stageWidth / gameWidth;
var ratioY:Float = stageHeight / gameHeight;
zoom = Math.min(ratioX, ratioY);
gameWidth = Math.ceil(stageWidth / zoom);
gameHeight = Math.ceil(stageHeight / zoom);
}
trace('stage: ${stageWidth}x${stageHeight}, game: ${gameWidth}x${gameHeight}, zoom=$zoom');
addChild(new FlxGame(gameWidth, gameHeight, initialState, zoom, framerate, framerate, skipSplash, startFullscreen));
Toolkit.openFullscreen(function(root:Root) {
var view:IDisplayObject = Toolkit.processXmlResource("assets/xml/haxeui-resource.xml");
root.addChild(view);
});
}
我可以猜测,HaxeUI 和 HaxeFlixel 可能都有自己的主循环,并且它们的事件处理可能不兼容,但以防万一,有人可以有更明确的答案吗?
编辑:
实际上,使用 openPopup 会好很多:
Toolkit.openPopup( { x:20, y:150, width:100, height:100 }, function(root:Root) {
var view:IDisplayObject = Toolkit.processXmlResource("assets/xml/haxeui-naming.xml");
root.addChild(view);
});
可以与屏幕的其余部分进行交互(使用 HaxeFlixel 管理),但出现在使用 HaxeFlixel 管理的屏幕部分中的鼠标指针仍保留在 HaxeUI 用户界面元素下。