因此,我尝试创建一个初始屏幕,该初始屏幕在图像splash1.png
中逐渐消失,然后在几秒钟后再次逐渐消失。因此,我要做的是使屏幕开始完全为黑色,然后将颜色的alpha更改为1,然后将其逐渐变回黑色。但目前看来,它似乎已经陷入fadein
阶段,而且还没有超越。如果有人对我的工作有任何修复或替代,将不胜感激。
function love.load()
timer = 0
alpha = 0
fadein = 300
display = 500
fadeout = 900
splashScreen = love.graphics.newImage("images/Splash1.png")
end
function love.update(dt)
timer=timer+dt
if timer<fadein then alpha=timer/fadein print("fadein")
elseif timer<display then alpha=1 print("display")
elseif timer<fadeout then alpha=1-((timer-display)/(fadeout-display))print("fadeout")
else alpha=1 end
end
function love.draw()
love.graphics.setColor(255, 255, 255, alpha*255)
local sx = love.graphics.getWidth() / splashScreen:getWidth()
local sy = love.graphics.getHeight() / splashScreen:getHeight()
love.graphics.draw(splashScreen, 0, 0, 0, sx, sy) -- x: 0, y: 0, rot: 0, scale x and scale y
end
答案 0 :(得分:1)
抱歉,我花了这么长时间回答。以下代码应能满足您的需求:
function love.load()
timer = 0
alpha = 0
fadein = 3
display = 6
fadeout = 9
splashScreen = love.graphics.newImage("image.png")
end
function love.update(dt)
timer = timer + dt
if 0 < timer and timer < fadein then
alpha = timer / fadein
end
if fadein < timer and timer < display then
alpha = 1
end
if display < timer and timer < fadeout then
alpha = 1 - ((timer - display) / (fadeout - display))
end
end
function love.draw()
love.graphics.setColor(1, 1, 1, alpha)
local sx = love.graphics.getWidth() / splashScreen:getWidth()
local sy = love.graphics.getHeight() / splashScreen:getHeight()
love.graphics.draw(splashScreen, 0, 0, 0, sx, sy)
end
与您的代码的主要区别是:
我将elseif
语句切换为if
语句,并给出了timer
检查的上限和下限。您的版本的问题在于,第一个if
语句每次都是正确的,因此该程序甚至不会查看其他语句。
我更改了fadein
,display
和fadeout
的值。如果您使用dt
作为动画计数器,请注意它的计数速度很慢,对于标准监视器,我输入的示例值应为您提供一个很好的起点:
我将您的setColor
的值更改为从[0, 1]
的比例。我很确定255刻度可以工作,但是我还没有尝试过。