2012-06-25 19:13:30 -03:00
|
|
|
-- @docclass
|
|
|
|
|
g_effects = {}
|
2011-08-14 14:45:25 -03:00
|
|
|
|
2012-06-25 19:13:30 -03:00
|
|
|
function g_effects.fadeIn(widget, time, elapsed)
|
2022-08-17 12:51:56 -03:00
|
|
|
if not elapsed then
|
|
|
|
|
elapsed = 0
|
|
|
|
|
end
|
|
|
|
|
if not time then
|
|
|
|
|
time = 300
|
|
|
|
|
end
|
2021-07-19 19:24:59 -03:00
|
|
|
widget:setOpacity(math.min(elapsed / time, 1))
|
2012-03-23 10:48:05 -03:00
|
|
|
removeEvent(widget.fadeEvent)
|
2021-07-19 19:24:59 -03:00
|
|
|
if elapsed < time then
|
|
|
|
|
removeEvent(widget.fadeEvent)
|
2022-08-17 12:51:56 -03:00
|
|
|
widget.fadeEvent = scheduleEvent(function()
|
|
|
|
|
g_effects.fadeIn(widget, time, elapsed + 30)
|
|
|
|
|
end, 30)
|
2021-07-19 19:24:59 -03:00
|
|
|
else
|
|
|
|
|
widget.fadeEvent = nil
|
|
|
|
|
end
|
2011-08-14 14:45:25 -03:00
|
|
|
end
|
|
|
|
|
|
2012-06-25 19:13:30 -03:00
|
|
|
function g_effects.fadeOut(widget, time, elapsed)
|
2022-08-17 12:51:56 -03:00
|
|
|
if not elapsed then
|
|
|
|
|
elapsed = 0
|
|
|
|
|
end
|
|
|
|
|
if not time then
|
|
|
|
|
time = 300
|
|
|
|
|
end
|
2021-07-19 19:24:59 -03:00
|
|
|
elapsed = math.max((1 - widget:getOpacity()) * time, elapsed)
|
|
|
|
|
removeEvent(widget.fadeEvent)
|
|
|
|
|
widget:setOpacity(math.max((time - elapsed) / time, 0))
|
|
|
|
|
if elapsed < time then
|
2022-08-17 12:51:56 -03:00
|
|
|
widget.fadeEvent = scheduleEvent(function()
|
|
|
|
|
g_effects.fadeOut(widget, time, elapsed + 30)
|
|
|
|
|
end, 30)
|
2021-07-19 19:24:59 -03:00
|
|
|
else
|
|
|
|
|
widget.fadeEvent = nil
|
|
|
|
|
end
|
2011-08-14 14:45:25 -03:00
|
|
|
end
|
|
|
|
|
|
2012-06-25 19:13:30 -03:00
|
|
|
function g_effects.cancelFade(widget)
|
2021-07-19 19:24:59 -03:00
|
|
|
removeEvent(widget.fadeEvent)
|
|
|
|
|
widget.fadeEvent = nil
|
2012-03-23 10:48:05 -03:00
|
|
|
end
|
2013-02-05 19:08:32 -02:00
|
|
|
|
|
|
|
|
function g_effects.startBlink(widget, duration, interval, clickCancel)
|
2021-07-19 19:24:59 -03:00
|
|
|
duration = duration or 0 -- until stop is called
|
|
|
|
|
interval = interval or 500
|
|
|
|
|
clickCancel = clickCancel or true
|
2013-02-05 19:08:32 -02:00
|
|
|
|
2021-07-19 19:24:59 -03:00
|
|
|
removeEvent(widget.blinkEvent)
|
|
|
|
|
removeEvent(widget.blinkStopEvent)
|
2013-02-05 19:08:32 -02:00
|
|
|
|
2022-08-17 12:51:56 -03:00
|
|
|
widget.blinkEvent = cycleEvent(function()
|
|
|
|
|
widget:setOn(not widget:isOn())
|
|
|
|
|
end, interval)
|
2013-02-05 19:08:32 -02:00
|
|
|
|
2022-08-17 12:51:56 -03:00
|
|
|
if duration > 0 then
|
|
|
|
|
widget.blinkStopEvent = scheduleEvent(function()
|
|
|
|
|
g_effects.stopBlink(widget)
|
|
|
|
|
end, duration)
|
|
|
|
|
end
|
2013-02-05 19:08:32 -02:00
|
|
|
|
2022-04-29 23:14:24 -03:00
|
|
|
connect(widget, {
|
|
|
|
|
onClick = g_effects.stopBlink
|
|
|
|
|
})
|
2013-02-05 19:08:32 -02:00
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function g_effects.stopBlink(widget)
|
2022-04-29 23:14:24 -03:00
|
|
|
disconnect(widget, {
|
|
|
|
|
onClick = g_effects.stopBlink
|
|
|
|
|
})
|
2021-07-19 19:24:59 -03:00
|
|
|
removeEvent(widget.blinkEvent)
|
|
|
|
|
removeEvent(widget.blinkStopEvent)
|
|
|
|
|
widget.blinkEvent = nil
|
|
|
|
|
widget.blinkStopEvent = nil
|
|
|
|
|
widget:setOn(false)
|
2013-02-05 19:08:32 -02:00
|
|
|
end
|