[英]How to rotate an Image using Corona sdk with iPhone
我是电晕的新手。 我有一个可在屏幕上拖动的图像。 现在我想对该图像 object 应用旋转。
我目前拥有的代码是:
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)
在此代码中,图像在我拖动时旋转。 我希望在将图像放在屏幕上的某个位置后发生旋转。
谁能解决这个问题? 提前致谢
使用此公式在电晕 sdk 中旋转 object
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
我认为它对你有用......
在您的版本 function 中,您可以添加以下内容:
myAnim1:rotate(0)
...这会将 object 设置为“正常”(正面朝上)。
您可能还想查看正在执行旋转的代码 - 您正在将旋转度数设置为您正在触摸的屏幕上的 x 坐标。 如果那是你想做的,那你很好。 只是看起来很奇怪。 :)
您有一个响应所有“触摸”事件的侦听器集。 问题是“触摸”事件在您的手指触摸 object 的整个过程中发送,而您正在拖动它。 如果您只想在让 go 时做出响应,那么您需要对 event.phase 做出反应: http://developer.anscamobile.com/reference/index/eventphase-0
所以你的 function 看起来像:
local rotate = function(event)
if event.phase == "ended" then
myAnim1.rotation = event.x
end
end
或者
另一种方法是听“tap”而不是“touch”。 就个人而言,我将 go 与上述解决方案一起使用,以提高代码的未来灵活性,但请注意,虽然在手指触摸的整个过程中都会发送“触摸”事件,但仅在移除手指时才会发送“点击”事件。 所以:
myAnim1:addEventListener("tap", rotate)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.