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函数不会获取更新后的值。
我确信有更好的方法可以做到这一点,所以请赐教。
答案 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中解释它。