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 ユーザー インターフェイス要素の下に残ります。