当过渡正在进行时,值不会更新。

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 函数在转换进行时无法获得更新后的值。

我相信有更好的方法来做到这一点,请 enlighten 我。

点赞
用户869951
用户869951

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

local fuelTrans

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

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

2014-02-03 16:26:37