HaxeFlixel实现鼠标点击逻辑报Bool cannot be called错误求解
问题场景
使用HaxeFlixel开发时实现鼠标点击响应功能遇到编译报错,错误信息:
TitleState.hx:531: characters 6-28 : Bool cannot be called
触发报错的原有代码:
if(FlxG.mouse.justPressed(logo2)) { MusicBeatState.switchState(new StoryMenuState()); }
已确认全局Mouse相关配置变量均设置为true。
错误原因
FlxG.mouse.justPressed是布尔类型的只读属性,作用是标记当前帧鼠标是否刚完成按下动作,本身不是可传入参数的调用方法。代码中为其追加圆括号并传入logo2参数的写法,相当于尝试把布尔值作为函数执行,直接触发类型错误。
修复方法
实现点击logo2对象触发场景跳转,可使用以下两种经过验证的写法:
- 推荐写法:使用交互对象自带的鼠标检测属性
提前在logo2初始化逻辑中开启对象级鼠标交互:
替换原有点击判断逻辑为:logo2.mouseEnabled = true;if(logo2.justPressed) { MusicBeatState.switchState(new StoryMenuState()); } - 原生判断写法:结合全局鼠标状态+坐标碰撞检测
不需要依赖对象的鼠标交互开关,直接判断鼠标位置是否落在对象碰撞盒内:if(FlxG.mouse.justPressed && logo2.getHitbox().contains(FlxG.mouse.x, FlxG.mouse.y)) { MusicBeatState.switchState(new StoryMenuState()); }
内容的提问来源于stack exchange,提问作者Jolttr
相关产品推荐
相关产品推荐

