我正在使用此代码移动我触摸屏幕的猴子。如果我一次触摸一个屏幕,但是当我试图不断地触摸左侧和右侧的屏幕时它会跳过帧而不是传输到我之前触摸的屏幕上的区域
local function moveMonkey(event)
if event.phase == "began" then
speed = 1500 / screenWidth * (mAbs(monkey.x - event.x))
transition.to ( monkey, {time = speed, x = event.x} )
end
end
答案 0 :(得分:2)
您应该在开始新的转换之前取消之前的转换(在相同的参数上)。通过保存transition.to
的返回值并在创建新转换之前检查变量是否已定义来执行此操作,如果是,则在其上调用transition.cancel()
:
local trans = nil
local function moveMonkey(event)
if event.phase == "began" then
speed = 1500 / screenWidth * (mAbs(monkey.x - event.x))
if trans ~= nil then
transition.cancel(trans)
end
trans = transition.to ( monkey, {time = speed, x = event.x} )
end
end
还有其他管理转换的方法,请参阅。例如,您可以标记转换并取消它,因此无需保留对它的引用(但我现在无法测试,不知道不存在的标记上的transition.cancel
是否会导致问题 - 我猜它会被忽略),但标签名称应该是相当独特的:
local function moveMonkey(event)
if event.phase == "began" then
speed = 1500 / screenWidth * (mAbs(monkey.x - event.x))
transition.cancel("monkey_trans")
transition.to ( monkey, {time = speed, x = event.x, tag="monkey_trans"} )
end
end