CS50游戏课程push.lua运行报insert参数错误是什么原因?
报错原因及解决方法
这个报错的根源不在push.lua本身,你更换多个版本的push库仍报错也可以印证这一点,问题出在你main.lua第12行对push:setupScreen的调用参数不匹配:
- push.lua的
setupScreen方法的标准参数顺序为:虚拟窗口宽度、虚拟窗口高度、实际运行窗口宽度、实际运行窗口高度、配置项表。如果参数顺序传错、漏传配置项表,或者误把数值类型的参数传到了本该是配置表的位置,就会导致push内部初始化时,table.insert方法的第一个入参本该拿到存储画布的表,实际拿到的是你传入的错位数值,触发类型不匹配报错。 - 另一个高频触发场景是你调用方法时误用了点语法而非冒号语法:写成
push.setupScreen(...)而非push:setupScreen(...)。冒号语法会自动将push实例作为第一个self参数传入方法,用点语法会导致所有后续参数位置整体偏移,同样会出现参数类型错误。
你可以参照以下标准写法核对你main.lua第12行的调用代码:
-- 示例变量定义,你可以替换为你自己定义的常量 local VIRTUAL_WIDTH = 432 local VIRTUAL_HEIGHT = 243 local WINDOW_WIDTH = 1280 local WINDOW_HEIGHT = 720 function love.load() push:setupScreen(VIRTUAL_WIDTH, VIRTUAL_HEIGHT, WINDOW_WIDTH, WINDOW_HEIGHT, { fullscreen = false, resizable = true, vsync = true }) end
内容的提问来源于stack exchange,提问作者Rober
相关产品推荐
相关产品推荐

