Embed Size (px)
Transcript of Corona SDK
February 4, 2010 | 2009 Ansca Inc. All Rights Reserved. 1
Corona SDKApplications Programming Guide
Ansca Inc. 2009 Ansca Inc. All rights reserved.
No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in any form or by any means, mechanical, electronic, photocopying, recording, or otherwise, without prior written permission of Ansca Inc., with the following exceptions: Any person is hereby authorized to store documentation on a single computer for personal use only and to print copies of documentation for personal use provided that the documentation contains Anscas copyright notice.
The Ansca logo is a trademark of Ansca Inc.
No licenses, express or implied, are granted with respect to any of the technology described in this document. Ansca retains all intellectual property rights associated with the technology described in this document. This document is intended to assist application developers to develop applications using Ansca software. Every eort has been made to ensure that the information in this document is accurate. Ansca is not responsible for typographical errors.
Even though Ansca has reviewed this document, ANSCA MAKES NO WARRANTY OR REPRESENTATION, EITHER EXPRESS OR IMPLIED, WITH RESPECT TO THIS DOCUMENT, ITS QUALITY, ACCURACY, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE. AS A RESULT, THIS DOCUMENT IS PROVIDED AS IS, AND YOU, THE READER, ARE ASSUMING THE ENTIRE RISK AS TO ITS QUALITY AND ACCURACY.
IN NO EVENT WILL ANSCA BE LIABLE FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES RESULTING FROM ANY DEFECT OR INACCURACY IN THIS DOCUMENT, even if advised of the possibility of such damages.
THE WARRANTY AND REMEDIES SET FORTH ABOVE ARE EXCLUSIVE AND IN LIEU OF ALL OTHERS, ORAL OR WRITTEN, EXPRESS OR IMPLIED. No Ansca dealer, agent, or employee is authorized to make any modi"cation, extension, or addition to this warranty.
Some states do not allow the exclusion or limitation of implied warranties or liability for incidental or consequential damages, so the above limitation or exclusion may not apply to you. This warranty gives you speci"c legal rights, and you may also have other rights which vary from state to state.
Lua 5.1 Copyright 1994-2008 Lua.org, PUC-Rio.
iPhone, App Store and Mac OS are trademarks of Apple, Inc.
OpenGL ES is a trademark of Khronos Group.
Photoshop and Illustrator are registered trademarks of Adobe, Inc.
Ansca, Corona and Corona SDK are trademark of Ansca, Inc.
February 4, 2010 | 2009 Ansca Inc. All Rights Reserved. 2
See Also 8
Tutorial Introduction 9
Hello World 9
Simulator vs Terminal 10
Hello World on the Simulator 10
Rapid Prototyping 11
Basic Interactivity 12
Animation and Sound 13
Assets (Building Blocks) 14
Starting a Project 14
Building for Device 15
Sample Code 16
Application Environment 18
Life Cycle 18
Global Runtime Object 18
Application Events 18
February 4, 2010 | 2009 Ansca Inc. All Rights Reserved. 3
Application Icon 19
Launch Image 19
Event Handling 20
Global Events 20
Local Events 20
Hit Events 20
Propagation and Handling of Events 20
Overriding Propagation with Focus 21
Listeners and Event Delivery 21
Registering for Events 22
Graphics and Drawing 23
Creating Display Objects 23
Painters Model 23
Display Hierarchy 23
Group Objects 23
Stage Objects 24
Moving Objects Forward and Backward 24
Drawing Cycle 25
Screen Updates 25
Coordinates and Transforms 25
Changing Position of Objects 26
February 4, 2010 | 2009 Ansca Inc. All Rights Reserved. 4
Object References 27
Removing Objects Properly 27
Variable References 28
Common Pitfalls 29
Basic Animations 31
Animated Sprites (or Movieclips) 32
Custom/Programmatic Animations 32
Frame Rate 33
Time-based vs Frame-based 33
Lost or Missing Time 34
User Interface 36
Text Input 36
Getting Paths to Files 37
Reading Files 37
Writing Files 38
Beware Security Violations 38
Downloading Files 39
Uploading Files 39
February 4, 2010 | 2009 Ansca Inc. All Rights Reserved. 5
Playing Sound 40
Event Sound 40
Longer Sounds 40
Playing Video 40
Device Support 42
Common Design Tasks 43
Strategies to Avoid Globals 43
Overcoming Scoping Issues of Locals 43
Keeping Everything Local in Listeners 43
Pausing and Restarting Animations 43
Managing Screens 43
Saving Data on Application Exit 44
Restoring Data on Application Launch 44
Performance and Optimization 46
Using Memory Eciently 46
Reducing Power Consumption 47
Group objects 48
Turn o animations for non-visible objects 48
Optimize image sizes 49
Minimize setup code at startup time 49
February 4, 2010 | 2009 Ansca Inc. All Rights Reserved. 6
Lua: Best Practices 49
Use locals (i.e. avoid global variables) 49
Math: fast vs slow 50
Inserting objects into arrays 50
Constant Folding 50
Cache properties in a local variable 50
Tuning Your Code 51
Revision History 52
February 4, 2010 | 2009 Ansca Inc. All Rights Reserved. 7
Ansca Corona will fundamentally change how you approach iPhone software development whether you're an engineer, a web developer, or a designer.
The Corona SDK allows you to create native apps for the iPhone. These apps look and behave as normal applications natively built for a device. You get full access to device-speci"c features such as the camera or accelerometer. Your application will automatically leverage the performance bene"ts of being a native executable, especially hardware-accelerated sound and graphics.
The process is simple:
Design images, audio, video, and animation assets using your favorite creative tool. Rapidly develop your iPhone apps using the Corona SDK taking full advantage of the device
including accelerometer, touch screen, OpenGLES, and more.
Build native optimized apps and distribute them on the iPhone App Store.As a developer, you will program in Lua, a simple and intuitive scripting language with exceptional performance, and leverage Corona's innovative and robust APIs.
This document will discuss how to use Corona's APIs to maximize your productivity.
Currently, the tools only work on Mac OS X 10.5.6 or later. Also, an Intel Mac is required to create iPhone device builds, due to Apples code-signing requirements.
Corona SDK Language and API Reference provides reference information for all functionality oered by Corona.
A highly recommended detailed and authoritative introduction to all aspects of Lua programming by Luas chief architect: Programming in Lua (2nd edition), by Roberto Ierusalimschy
For an ocial de"nition of the language, consult Lua 5.1 Reference Manual, by R. Ierusalimschy, L. H. de Figueiredo, W. Celes. Also available online at http://www.lua.org/manual/5.1/
Additional documentation is available at http://www.lua.org/docs.html A live, interactive demo of Lua is available at http://www.lua.org/demo.html. This is an
excellent place to see some simple sample programs and to play with your own.
February 4, 2010 | 2009 Ansca Inc. All Rights Reserved. 8
Lets start with a quick introduction to the Corona SDK. Well focus just on the essentials without getting stuck in the details. Were not trying to be complete or precise. Rather, we want to get you as quickly as possible to the point where you can start creating cool, useful, or engaging apps.
Well talk about some basics like variables and functions as well as incorporate animation and interactivity so you get a sense of whats possible. Keep in mind this is just a tutorial, so you wont "nd a complete explanation of any one feature.
Our aim is to address multiple audiences. Experienced programmers should be able to extrapolate the information in this chapter for their own needs. Beginners can use this as a springboard for writing their own small, simple apps.
The best (only) way to learn how to use the Corona SDK is by writing an app. To do that we write programs in a language called Lua. In keeping with tradition, lets write a some Lua code that prints Hello World.
The big roadblock, here, is "guring out the details of how to actually use the Corona SDK to do this. Once youve got these details mastered, everything gets a lot easier.
So lets get started! What youll need is a text editor to write your program in. Later, youll save that "le to a folder so that the Corona Simulator can run and show you the results.
In the text editor, type the following:
print( "Hello World" )
Then save it to a "le called main.lua in some folder thats easy to locate. Generally, every program should have its own folder on your system.
To run the program, you need to launch the Corona Simulator. All Corona SDK "les should be in the Corona folder in your Applications folder (see Ge