我正在使用此代码将猴子移动到我触摸屏幕的位置。 如果我一次触摸一个屏幕,它可以正常工作,但是当我尝试不断触摸左右两侧的屏幕时,它会跳过帧,而是传输到我之前触摸过的屏幕上的区域
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
您应该在开始新的转换之前取消上一个转换(使用相同的参数)。为此,请保存 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