Phaser 3加载宽高不等的精灵表制作动画报错返回空数组如何解决
问题原因
你遇到的报错是参数名大小写拼写错误导致的:
- Phaser 3 加载精灵表的
spritesheet方法配置项中,帧高度的参数名为驼峰格式的frameHeight(首字母H大写),你的代码中写的是全小写的frameheight,Phaser无法识别该参数,会默认取frameWidth的数值作为帧高度。 - 你加载不等宽高的精灵表时
frameWidth设为96,Phaser默认采用96作为帧高度,而你的1health.png实际高度只有32px,无法切出任何符合尺寸的帧,因此抛出零帧、帧缺失的报错。 - 之前加载等宽高的player精灵表时没有报错,是因为帧宽和帧高都是16,即使没识别到帧高度参数,默认取帧宽的16也刚好匹配需求,掩盖了拼写错误。
解决方案
- 修正精灵表加载代码的参数拼写,将
frameheight改为frameHeight:
this.load.spritesheet('1health', 'assets/spritesheets/1health.png',{frameWidth:96,frameHeight:32});
- 可选校验步骤(修正参数后仍有问题可排查):
- 确认1health.png的实际尺寸符合帧切割要求:宽度为96px的整数倍,高度为32px的整数倍。
- 确保动画创建逻辑放在
create生命周期阶段执行,避免精灵表还未加载完成就调用anims.create生成帧。
内容的提问来源于stack exchange,提问作者A.J Alhorr
相关产品推荐
相关产品推荐

