HaxeFlixel报错:source/MainMenuState.hx:25 Unexpected selectedOption求解
HaxeFlixel代码报错排查与修复
你的代码存在三个关键问题,逐个解决就能正常运行:
1. if语句语法错误
Haxe要求if的条件必须用括号()包裹,你代码里的if selectedOption == optionsPre.length写法不符合语法规范,这是直接触发报错的原因。所有if条件都要改成if (条件)的形式。
2. 代码位置错误
debugSelOpt.text = "selectedOption value: " + selectedOption;这行代码直接写在类的顶层作用域里,Haxe不允许在类的非方法区域执行赋值语句,必须把它放到update方法里,这样才能实时更新调试文本的内容。
3. 调试文本未添加到状态
你创建了debugSelOpt对象,但没有调用add(debugSelOpt)将它添加到当前状态中,就算前面的问题都修复,你也看不到这个调试文本。需要在create方法里完成初始化并添加到状态。
另外,原来的上下键逻辑不完整,按UP/DOWN只有特定情况才会改变selectedOption,补充完整逻辑后才能正常切换选项。
修复后的完整代码:
package; import flixel.FlxState; import flixel.FlxG; import flixel.*; import flixel.text.*; import flixel.ui.*; class MainMenuState extends FlxState { var optionsPre:Array<String> = ["New Game", "Settings", "Quit Game"]; var options:Array<String> = ["Continue Game", "Create New Game", "Settings", "Quit Game"]; var debugSelOpt:FlxText; var selectedOption = 0; override public function create() { super.create(); // 初始化调试文本并添加到当前状态 debugSelOpt = FlxText.new(8, 8, 0, "Debug field", 8, false); add(debugSelOpt); } override public function update(elapsed:Float) { super.update(elapsed); if (FlxG.keys.justPressed.UP) { // 修复if语句括号,补充完整的选项切换逻辑 if (selectedOption == 0) { selectedOption = optionsPre.length; } else { selectedOption -= 1; } } if (FlxG.keys.justPressed.DOWN) { // 修复if语句括号,补充完整的选项切换逻辑 if (selectedOption == optionsPre.length) { selectedOption = 0; } else { selectedOption += 1; } } // 实时更新调试文本内容 debugSelOpt.text = "selectedOption value: " + selectedOption; } }
内容的提问来源于stack exchange,提问作者Tethrarxitet
相关产品推荐
相关产品推荐

