Developing iPhone/iPad/Android applications with Corona: Orientation Change

Posted by Dr. Burton on July 13, 2010 in Android, Corona, iPad, iPhone, Mobile |

In this final “Hello World” with Corona, we will look at how to allow for orientation change in our app.

First, please recognize that this is for a general rotation.  Seldom will this be sufficient to handle all rotation needs of your app.  You will usually need to code in the screen size and where you want the object to be located in the new orientation.

I’m going to start with the code that we used for adding sound effects to our app:

local textObj = display.newText(“Hello World!”, 50, 50, nil, 24)
textObj:setTextColor( 255, 255, 255)

local mybutton = display.newImage( “button.png” )
mybutton.x = display.contentWidth/2
mybutton.y = display.contentHeight-75

local h = textObj.height
local w = textObj.width

function mybutton:tap( event )
media.playEventSound(“beep.caf”)
textObj.alpha=0
textObj.x = math.random(w/2, display.contentWidth – (w/2))
textObj.y = math.random(h/2, display.contentHeight -(100 + h/2))
transition.to(textObj, {time=3000, alpha = 1})
end

mybutton:addEventListener( “tap”, mybutton )

To handle orientation, we will need to add a new listener and a function to handle the orientation change:
local function onOrientationChange (event)
local newAngle = textObj.rotation – event.delta
transition.to( textObj, {time= 150, rotation = newAngle})
end

Runtime:addEventListener( “orientation”, onOrientationChange )

The Runtime:addEventListener looks for the orientation change and calls the function.  The function looks at the current angle of textObj and calculates the new orientation angle by subtracting the event.delta.  After calculating the new angle, we perform a transition to the new orientation.  Our final code looks like:

local textObj = display.newText(“Hello World!”, 50, 50, nil, 24)
textObj:setTextColor( 255, 255, 255)

local mybutton = display.newImage( “button.png” )
mybutton.x = display.contentWidth/2
mybutton.y = display.contentHeight-75

local h = textObj.height
local w = textObj.width

function mybutton:tap( event )
media.playEventSound(“beep.caf”)
textObj.alpha=0
textObj.x = math.random(w/2, display.contentWidth – (w/2))
textObj.y = math.random(h/2, display.contentHeight -(100 + h/2))
transition.to(textObj, {time=3000, alpha = 1})
end

local function onOrientationChange (event)
local newAngle = textObj.rotation – event.delta
transition.to( textObj, {time= 150, rotation = newAngle})
end

mybutton:addEventListener( “tap”, mybutton )
Runtime:addEventListener( “orientation”, onOrientationChange )

Note: I have changed display.stageWidth and display.stageWidth to display.contentWidth & display.contentHeight for version 2.0 of Corona.  As of 2.0 stageHeight & stageWidth have been depreciated.


Demonstration:

iPhone/iPad/Android dev with Corona-orientation change
Runtime
3:59
View count
1,701

Tags: , , , , , ,

4 Comments

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Spam Protection by WP-SpamFree

Copyright © 2010-2012 Burtons Media Group All rights reserved.
Desk Mess Mirrored version 1.9.1 theme from BuyNowShop.com.