【问题标题】:Stop listening for 'x' seconds in corona停止在电晕中听“x”秒
【发布时间】:2012-09-16 04:40:03
【问题描述】:

我有一个基于摇动事件的淡入/淡出功能,但是如果您在该功能期间再次摇动它,它会堆叠功能。我想要的是让它等到函数结束(5 秒)然后再次收听。代码是什么?

这是我目前拥有的:

function fadeOut ( event )
    transition.to(yes1, {time=2000, alpha=0})
    transition.to(yes2, {time=2000, alpha=0})
    ...
    transition.to(funny3, {time=2000, alpha=0})
    transition.to(funny4, {time=2000, alpha=0})
    timer.performWithDelay(2000, onShakeComplete)
end

responses = {yes1, yes2, yes3, yes4, yes5, yes6, yes7, yes8, yes9, yes10,
no1, no2, no3, no4, no5, maybe1, maybe2, maybe3, maybe4, maybe5,
funny1, funny2, funny3, funny4}

local shaking = false

-- reset shaking flag after a shake is completed
local function onShakeComplete()
    shaking = false
end

local function onShake (event)
        if event.isShake and not shaking then
        shaking = true
        local object = responses[math.random(1,20)]
        transition.to(object, {time=2000, alpha=1})
        timer.performWithDelay(4000, fadeOut)
    end
end
Runtime:addEventListener("accelerometer", onShake)

【问题讨论】:

  • 你需要展示一些代码来让事情更清楚你想要什么。您现在如何设置事件处理程序?

标签: events lua coronasdk listen


【解决方案1】:
-- true if we have a shake happening right now
local shaking = false

-- reset shaking flag after a shake is completed
local function onShakeComplete()
    shaking = false
end

local function onShake (event)
    if event.isShake and not shaking then
        local object = responses[math.random(1,20)]
        transition.to(object, {time=2000, alpha=1})
        timer.performWithDelay(4000, fadeOut)
        timer.performWithDelay(4000, onShakeComplete)
        shaking = true
    end
end

【讨论】:

  • 它仍然允许功能重叠。
  • 那么我们需要更多细节。定义“重叠”?多少?它是否仅在抖动事件开始时发生(可能的竞争条件)?这是一个非常小的重叠吗?
  • 多个对象淡入,但是,由于我的编程方式,它们都同时淡出。这是一个主要的重叠,可以清楚地看到图像。它只是在摇动的初始化时开始重叠。
  • @Mud 我怀疑由于您在fadeOut 开始时再次打开了shake 事件,所以fadeOut 将与下一个fadein 重叠。
  • @JShoe 如果您根本不希望它们重叠,则应该在淡出完成时将其打开。在没有看到 fadeOut 函数的情况下很难准确说出具体的方法,但是将 timer.performWithDelay(4000, onShakeComplete) 移动到那里并将 4000 更改为您应该工作的任何淡出时间。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-14
  • 1970-01-01
相关资源
最近更新 更多