Best Practices for Organizing Projects

Posted by & filed under Tutorials, Tips and Demos.


Something that isn’t clear by studying Corona’s included SampleCode or any of the other examples and tutorials on this website is the concept of organizing projects. We’ve sort of just let you know that everything goes into your project folder and sent you off on your way—and oh, sub-folders are supported. That’s about all we’ve said on the subject up until now.

However, as your projects get bigger, that may not be quite enough. With more and more resources are being added to your project, such as audio files, images, videos, Lua modules, etc. it can add a whole new layer of complexity to the development process—complexity that isn’t at all necessary.

This tutorial is by no means the end-all to Corona SDK project organization techniques, but it will introduce you to an effective one that you can tweak at your heart’s content to suit your needs perfectly.

Properly Removing Objects and Variables

Posted by & filed under Tutorials, Tips and Demos.


Removing objects and getting rid of unneeded variables may seem trivial, but it’s actually common question among Corona newcomers and veterans alike.

The potential consequences of doing this simple-but-important task incorrectly can lead to memory leaks, app slowdowns, and even crashes (which you don’t want, obviously).

How to Use Custom Events in Corona

Posted by & filed under Tutorials, Tips and Demos.


A little over a year ago (in June of 2011), I went over the Corona Event Model, and explained exactly what events are in Corona, when they occur, and how you can “hook” into them to take advantage of some of Corona’s best features.

However, in the previous article, I kept the subject-matter focused on the built-in events associated with specific API’s that are provided out-of-the-box in Corona. What I didn’t mention is that you can define your own custom events, and have objects listen for when those events are dispatched (which you have complete control over as well).

This tutorial will walk you through defining and dispatching custom events, so you can begin applying the knowledge to your own games and apps.

Guided Tour of Corona’s API Reference

Posted by & filed under Tutorials, Tips and Demos.


This week’s tutorial is going to be a little different. Rather than go over yet another awesome Corona feature, I’ll instead be walking you through another aspect of Corona development that’s arguably just as important (if not more important) than any one specific feature of the SDK. What you’ll be learning about today is something you’ll undoubtedly use in every single Corona project you work on, and that is of course is the Corona SDK API Reference.

How to Use Bitmap Masks

Posted by & filed under Tutorials, Tips and Demos.

EDITOR’S NOTE: This tutorial is outdated and has been replaced by a new guide: Masking Images. Please refer to this guide for details and usage examples. In this week’s tutorial, I’m going to cover a feature that, while infinitely useful for many projects, you may not even be aware exists because of its specialized use-cases. That feature is bitmap masking, which is accessed from the graphics.newMask() function. You may not know what bitmap masking is, or you might not see how it could be useful to you. In either case, stick around because this is definitely a good tool to have in the “tool shed”. Bitmap masks can be used to solve some otherwise tricky problems which include (but is not limited to): Disable touches

Tutorial: Handling Corona System Events

Posted by & filed under Tutorials, Tips and Demos.

When developing applications, it’s important to handle scenarios that occur as a result of the user interacting with your game in as many different ways possible. It’s equally as important to handle scenarios that occur as a result of “system” events, whether they are explicitly triggered by the user or not. Things that immediately come to mind are things that cause your app to become “suspended” such as the user receiving a phone call, or pressing the “home” button on their device (your app is still running in the background, but in a suspended/paused state). What about when the user comes back to your app while it is suspended, or when your app exits completely? All of those things are handled by “system” events in

Tutorial: LuaFileSystem (LFS)

Posted by & filed under Tutorials, Tips and Demos.

For those who don’t know what LFS is, it’s a popular Lua library that allows you to perform common file system activities that can’t normally be done in plain Lua. Things like getting file attributes, creating and removing directories (folders), and iterating over files in a directory are all things that can be easily done using LFS. During the course of this tutorial, it might help to have a separate tab open with the LFS Reference. Directory Scanning Let’s say you were creating a note-taking app that allows users to create, save, and read text-based notes that are all saved to system.DocumentsDirectory. Sure, it’s easy to keep track of what the user does inside of your app. You could simply keep your own record of

Tutorial: Property Callbacks

Posted by & filed under Tutorials, Tips and Demos.

If you know what events are Corona (if you don’t, you should start here), then you know that they allow you to “do something” whenever a specific action that corresponds to an event occurs. You can even define your own actions, and dispatch custom events whenever it is appropriate for your app. However, no events are dispatched whenever a property of a display object (such as x, rotation, alpha, etc.) is changed, and it’s not readily apparent how (or even if it’s possible) to do so. But how many times have you wished that you could “do something” (e.g. call a function, display a message, update a graphic, etc) whenever a certain property gets changed on a specific object though? If you can’t see how

Scene Overlays and Parameter Passing

Posted by & filed under Tutorials, Tips and Demos.

One of the two most-requested items in regards to the Storyboard API was the ability to pass custom data between scenes as you switched between them, and also some kind of “pop up” feature, where a scene can be loaded and displayed above another scene, leaving the currently active scene intact. The documentation for both is available now—parameter passing with storyboard.gotoScene() and scene overlays with storyboard.showOverlay()—but I’ll give you a quick overview right now to get you started. Parameter Passing I keep throwing around this term, so for those who don’t know, parameter passing allows you to easily “pass” custom data (such as a single variable or a table with as much data as you want) from one scene to the next when you initiate

Director to Storyboard “Transition” Guide

Posted by & filed under Tutorials, Tips and Demos.

Lights… camera… CUT! Corona’s Storyboard API has been around for a while now, but there is still some confusion among the community in regards to how to use it. And while I’m sure that my recent explanation of the various events associated with the Storyboard API certainly helped a little, perhaps an explanation of the Storyboard API by itself isn’t quite enough. Prior to the Storyboard API, there was no “official” Corona SDK solution to scene management, so most people used Ricardo Rauber’s Director Class, a really great 3rd-party open source library that helped with scene management and also allowed you to transition between scenes with a number of cool effects. When Storyboard finally did show up, it came with some significant differences in terms