2014-11-21 22 views
0

我使用此代码来移动我触摸屏幕的猴子。它工作正常的,如果我触摸屏幕一次一个,但是当我尝试不断地触摸左,右侧它会跳帧,画面,而是运送到该地区的屏幕里的我以前虽然不断移动字符,它跳过框架

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 

回答

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 
+0

Upvoted for nice description。提供固定的代码会很棒! – Hassaanz 2014-11-27 21:44:39

+0

@HunterSeeker完成 – Schollii 2014-11-28 02:27:18