2

只是想知道是否有人知道如何重新创建触摸杆动作?

http://www.wired.com/geekdad/wp-content/uploads/2011/08/JJ-jackpot.jpg

4

2 回答 2

2

不知道确切的动画是什么,但如果您必须拉下控制杆来激活而不只是单击控制杆,那么您需要获取初始触摸位置并将其与最终触摸位置进行比较。当前触摸在 2 个开始和结束位置之间的百分比决定了正在使用的动画帧。

因此,假设您的杠杆动画中有 10 帧:

function lengthOf(a, b)
    local width, height = b.x-a.x, b.y-a.y
    return (width*width + height*height)^0.5
end

local startBox, endBox
local beingPulled = false
if isOver(touchPos, startBox) and touch.phase == "began" then
   beingPulled = true
end
if touch.phase == "moved" then
   if beingPulled then
      local lengthA = lengthOf(touch, startBox)
      local lengthB = lengthOf(touch, endBox)
      local totalLength = lengthA+lengthB
      local percentage = totalLength/lengthA

      lever:setFrame( math.ceil(percentage*10) )
   end
end
if touch.phase == "ended" then
   lever:resetPosition()
   beingPulled = false
end
于 2012-10-22T05:01:55.923 回答
1

您将需要 3d 对象,它可以稍微旋转 - 以制作该动画,或者您可以在动画对象时预先渲染所有动画帧(例如 - 您有一个“杠杆”对象)。

我做过类似的事情——我有一个旋转立方体的预渲染图像。我将所有这些图像设置为动画帧,如下例所示: http: //appsamuck.com/day2.html

我在此上方放置了不可见的滚动视图UIImageView。然后,什么时候scrollViewDidScroll被调用 - 我只是改变了当前的UIImageView动画帧。

所以在这种情况下 - 它可能是一个UIScrollView,它在 - 例如:

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate

将 setContentOffsetCGPoint(0,0)指向。(带动画)。

那是我的提议。祝你好运!

于 2012-10-31T09:19:41.970 回答