在不断移动角色的同时,它跳过了帧



我正在使用此代码将猴子移动到我触摸屏幕的位置。 如果我一次触摸一个屏幕,它可以正常工作,但是当我尝试不断触摸左右两侧的屏幕时,它会跳过帧,而是传输到我之前触摸过的屏幕上的区域

  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

相关内容

最新更新