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

时间:2019-07-11 17:24:59

标签: graphics 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'

1 个答案:

答案 0 :(得分:1)

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

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(每帧)。