如何使用Corona sdk和iPhone一起旋转图像

时间:2011-06-04 07:27:12

标签: ios ios4 lua corona

我是Corona的新手。我有一个可在屏幕上拖动的图像。现在我想对该图像对象应用旋转。

我目前的代码是:

  myAnim1 = movieclip.newAnim{"ICQ.png"}
  --foreground:insert( myAnim2 )

  myAnim1.x = 20
  myAnim1.y = 80


local function pressFunction()
    myAnim1.alpha = 0.7
end

local function releaseFunction()
    myAnim1.alpha = 1.0
end



-- Make 2nd sprite draggable
myAnim1:setDrag{ 
    drag=true,
    onPress=pressFunction, 
    onRelease=releaseFunction,
    bounds = { 0, 0, 320, 480 }


}

local rotate = function( event )
    myAnim1.rotation = event.x
    end
myAnim1:addEventListener( "touch",rotate)

在此代码中,图像会在我拖动时旋转。我希望在将图像放在屏幕上的某个位置后进行旋转。

有人能解决这个问题吗?提前致谢

3 个答案:

答案 0 :(得分:1)

使用此公式在corona sdk中旋转对象

local rotate = function(event)
 if event.phase == "ended" then
  myAnim1.rotation = math.ceil(math.atan2( (event.y - myAnim1.y), (event.x -myAnim1.x) ) * 180 / math.pi) + 90
 end
end

我认为对你来说很有用.........

答案 1 :(得分:0)

在您的发布功能中,您可以添加:

myAnim1:rotate(0)

...这会将对象设置为“正常”(正面朝上)。

您还可能希望查看正在进行旋转的代码 - 您将旋转度设置为您正在触摸的屏幕上的x坐标。如果这就是你想做的事情,你就是好人。这看起来很奇怪。 :)

答案 2 :(得分:0)

您有一个响应所有“触摸”事件的侦听器集。问题是,当您手指触摸对象时,“触摸”事件将被调度,同时您将其拖动。如果您只想在放手时做出回应,那么您需要对event.phase作出反应: http://developer.anscamobile.com/reference/index/eventphase-0

所以你的功能看起来像是:

local rotate = function(event)
  if event.phase == "ended" then
    myAnim1.rotation = event.x
  end
end

另一种方法是听“轻拍”而不是“触摸”。就个人而言,我会考虑上面的解决方案,以便将来在代码中具有灵活性,但请注意,虽然手指触摸的整个时间都会调度“触摸”事件,但只有在删除手指时才会调度“点击”事件。所以:

myAnim1:addEventListener("tap", rotate)