你如何在Love2d上只运行一次绘图功能

时间:2016-02-18 12:14:21

标签: lua love2d

我目前正在尝试创建一个Love2d太空游戏,我试图为幸运的星星创造随机代,我创造星星的功能是:

function space.drawStars()

    for i = 1, space.starNum do
        love.graphics.setColor(255, 255, 255)
        space.starSize = love.math.random(1, 10)
        space.starXPosition = love.math.random(1, 1200)
        space.starYPosition = love.math.random(1, 750)
        love.graphics.rectangle("fill", space.starXPosition,space.starYPosition, space.starSize, space.starSize)
    end

end

我对这个功能的当前问题是,当它运行时,Lua似乎多次运行该功能并且星星不断变化。我已经尝试将此函数的内容放在我的主类的load()函数中,但是因为这需要在我的绘制函数中,所以它不会生成星星。

请有人帮助我如何让这个功能只运行一次,所以Lua只画了一组星星并且不会不断地创造新的星星并摧毁原来的星星。

谢谢,

1 个答案:

答案 0 :(得分:2)

创建一次启动。像这样(未经测试):

local stars = nil

local function createStars()
    if stars==nil then
        stars={}
        for i = 1, space.starNum do
            stars[i] = {
                Size = love.math.random(1, 10),
                XPosition = love.math.random(1, 1200),
                YPosition = love.math.random(1, 750),
            }
        end
    end
end

function space.drawStars()
    createStars()
    for _, star in ipairs(stars) do
        love.graphics.setColor(255, 255, 255)
        love.graphics.rectangle("fill", star.XPosition, star.YPosition, star.Size, star.Size)
    end
end