转换正在进行时,值不会更新

时间:2014-02-03 15:06:09

标签: lua corona

FuelGaugeArrow:rotate( 75 )
local FuelDecreaseAngle = 150 / FuelLevelMax

local function BurnFuel(event)
  --transition.to( FuelGaugeArrow, { rotation = FuelGaugeArrow.rotation - FuelDecreaseAngle } )
  FuelGaugeArrow.rotation = FuelGaugeArrow.rotation - FuelDecreaseAngle
  FuelLevel = FuelLevel -1
  if FuelLevel <=0 then
    OutOfFuel()
  end
end
local FuelBurn = timer.performWithDelay( 1000, BurnFuel , 0)

FuelGaugeArrow旋转值由另一个功能更新(当火箭拿起燃料桶时,它会增加值):

local function ScrollExtras(event)
   if FuelGaugeArrow.rotation + FuelIncreaseAngle <= 75 then 
      FuelGaugeArrow.rotation = FuelGaugeArrow.rotation + FuelIncreaseAngle
   else
      FuelGaugeArrow.rotation = 75
   end
end
Runtime:addEventListener( "enterFrame", ScrollExtras )

这在上面的代码中运行良好,但是当我使用注释掉的代码时,即当我尝试使用转换来移动箭头时,它只有在那个精确时刻没有转换时才有效。转换正在进行时,BurnFuel函数不会获取更新后的值。

我确信有更好的方法可以做到这一点,所以请赐教。

1 个答案:

答案 0 :(得分:0)

您必须在开始新的之前取消之前的转换,或者在开始新的之前等到之前的结束。 transition.to()返回对可以暂停的转换对象的引用等。例如,

local fuelTrans

local function BurnFuel(event)
    if fuelTrans ~= nil then 
        fuelTrans.cancel()
        fuelTrans = transition.to( FuelGaugeArrow, ... )
    end
    ...
end

第二种方法(等到第一次完成)可能不是你想要的,加上它涉及将onComplete参数设置为一个监听器,但如果你更喜欢在transition.to中解释它。