绘制从其他文件加载的图像(love2d)

Drawing an image loaded from other files (love2d)

所以我的游戏文件夹中有一个 "load_assets.lua" 文件以及 "main.lua"。在 "load_assets.lua" 文件中我有一个 "love.graphics.newImage(image)" 在 "main.lua" 文件中我有 "love.graphics.draw(image)".

我试图在 "main.lua" 文件中创建这个函数:

function love.draw(i)
    love.graphics.draw(i)
end

和 "load_assets.lua" 文件中的这个函数:

image = love.graphics.newImage(image)
lovedraw(image)

但似乎还是不行。

当然,代码比这个复杂一点,但是类似:

--in "main.lua" the function is actually:

function title(lvl0)
    love.graphics.draw(lvl0)
end

--and in "load_assets" it's:

function love.load()
    lvl0 = love.graphics.newImage("lvl0.png")
end

title(lvl0)

当我 运行 代码时,我得到这个错误:

Error

title.lua:3: bad argument #1 to 'draw' (Drawable expected, got nil)


Traceback

[C]: in function 'draw'
title.lua:3: in function 'title'
main.lua:16: in main chunk
[C]: in function 'require'
[C]: in function 'xpcall'
[C]: in function 'xpcall'

我不知道你的代码的细节,但以下代码对我有用:

load_assets.lua

function love.load()
    lv10 = love.graphics.newImage("image.png")
end

main.lua

require("load_assets")

function title(lv10)
    love.graphics.draw(lv10)
end

function love.draw()
    title(lv10)
end

Love2d 有几个内置函数,您可以覆盖这些函数来创建您的程序。理想情况下,所有函数调用都发生在这些程序中。

因此,在 load_assets.lua 中,我覆盖了 love.load() 函数以创建 lv10。默认情况下 love.load() 称为 exactly once, at the start of the program

main.lua中我定义了title()函数,然后覆盖love.draw()调用title()。默认情况下,love.draw() 被称为 every update cycle of the love engine(每一帧)。