我是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)
在此代码中,图像会在我拖动时旋转。我希望在将图像放在屏幕上的某个位置后进行旋转。
有人能解决这个问题吗?提前致谢
答案 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)