<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Corona Labs</title>
	<atom:link href="http://www.coronalabs.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.coronalabs.com</link>
	<description>Whether you&#039;re new to Corona or want to take your app to the next level, we&#039;ve got a wealth of resources for you including extensive documentation, API reference, sample code, and videos.</description>
	<lastBuildDate>Wed, 22 May 2013 04:50:54 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Tutorial: Using the Zip Plugin</title>
		<link>http://www.coronalabs.com/blog/2013/05/21/tutorial-using-zip-plugin/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=rss</link>
		<comments>http://www.coronalabs.com/blog/2013/05/21/tutorial-using-zip-plugin/#comments</comments>
		<pubDate>Tue, 21 May 2013 18:28:14 +0000</pubDate>
		<dc:creator>Rob Miracle</dc:creator>
				<category><![CDATA[Daily Build]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Corona Plug-ins]]></category>
		<category><![CDATA[daily builds]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[zip]]></category>

		<guid isPermaLink="false">http://www.coronalabs.com/?p=34419</guid>
		<description><![CDATA[Today, we announced that Corona Plugins - codenamed "Project Gluon" - are live and available to Corona SDK Pro subscribers using recent Daily Builds. In this week's tutorial, learn how to get started with our walkthrough of the "zip" plugin, convenient for compressing and uncompressing files within your app.]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.coronalabs.com/wp-content/uploads/2013/05/zip-plugin-feat.png"><img class="alignright size-full wp-image-34440" alt="zip-plugin-feat" src="http://www.coronalabs.com/wp-content/uploads/2013/05/zip-plugin-feat.png" /></a>Today, <a href="http://www.coronalabs.com/blog/2013/05/21/corona-weekly-update-new-plugin-partners-core-gets-lighter/" target="_blank">Corona Labs announced</a> that Corona Plugins — code named &#8220;Project Gluon&#8221; — are live and available to <a href="http://www.coronalabs.com/store/" target="_blank">Corona SDK Pro</a> subscribers using <a href="http://developer.coronalabs.com/downloads/daily-builds" target="_blank">Daily Build #1115</a> and above.</p>
<p>One of the new <a href="http://www.coronalabs.com/resources/plugins/" target="_blank">plugins</a> handles the compression and un-compression of files using the popular <strong>zip</strong> algorithm. For anybody who&#8217;s unfamiliar with <strong>zip</strong> files, the most common usage is when you need to group several related files into a &#8220;package&#8221; so it&#8217;s easier to move them around and share them with others. For example, if you contract a set of artwork from a designer, he/she can compress them into a <strong>zip archive</strong> and send them via email, Dropbox, etc. All of the artwork will be contained in that one file with the <strong>.zip</strong> extension, and when you open it locally, the file will &#8220;unzip&#8221; and all of the files will be available to you, exactly as the designer intended. Another use of <strong>zip</strong> files is to compress one large file into a smaller overall <strong>.zip</strong> file. The format and type of the original file will dictate the amount of compression achieved, but in virtually every instance, you&#8217;ll save valuable storage space.</p>
<p>Why is this important to <a href="www.coronalabs.com/products/corona-sdk">mobile app developers</a>? For one, you gain the ability to expand your app&#8217;s contents. You can create a <strong>zip</strong> file containing expansion art and sounds, download it into your app, unzip it, and use those assets. Secondly, you can now produce <strong>zip</strong> files which you can upload to web servers for distribution.</p>
<p>In today&#8217;s tutorial, let&#8217;s examine how to download a <strong>zip</strong> file from a web server, unzip the contents, and show a list of the files within.</p>
<hr />
<h3>Using Corona Plugins</h3>
<p>Corona Plugins are &#8220;managed&#8221; from the <strong>build.settings</strong> file in your core project directory. This makes it easy to add just the <em>specific</em> plugins you need for an app, ultimately resulting in a lighter compiled binary.</p>
<p>To use a plugin, simply add the <strong>plugins</strong> table within <strong>settings</strong> and configure the <strong>zip</strong> plugin within:</p>
<pre>settings =
{
   orientation =
   {
      default = "portrait",
      supported = { "portrait", "portraitUpsideDown" },
   },
   plugins = 
   {
      ["plugin.zip"] =
      {
         publisherId = "com.coronalabs",
      },
   },
}</pre>
<p>Next, in your main project code, you must <strong>require</strong> the plugin, similar to how you&#8217;d require a core Corona library or external Lua module.</p>
<pre>local zip = require( "plugin.zip" )</pre>
<p>That&#8217;s it! Now you&#8217;re ready to use the <strong>zip</strong> plugin. Note that when you run a project in the Corona Simulator that requires a plugin, you&#8217;ll be prompted to download the plugin; t<strong>his only happens once</strong>, when you first use the plugin.</p>
<hr />
<h3>Implementing .zip in Code</h3>
<p>Like many API calls in Corona, a <strong>callback</strong> function is required so that you can determine when the process is complete and then take the appropriate action.</p>
<pre>local function zipListener( event )
   if ( event.isError ) then 
      print( "Unzip error" )
   else
      print( "event.name:" .. event.name )
      print( "event.type:" .. event.type )
      if ( event.response and type(event.response) == "table" ) then
         for i = 1, #event.response do
            print( event.response[i] )
         end
      end    
   end
end</pre>
<p>Now, let&#8217;s use use the <strong>network.download</strong> API call to retrieve the <strong>zip</strong> file from a remote server and, in its callback listener, initiate the unzip process. The callback function will list all files that are successfully uncompressed.</p>
<pre>local function networkListener( event )

   if ( event.isError ) then
      print( "Network error - download failed" )
   elseif ( event.phase == "began" ) then
      print( "Progress Phase: began" )
   elseif ( event.phase == "ended" ) then
      if ( math.floor(event.status/100) &gt; 3 ) then
         print( "Network error - download failed", event.status )
         --NOTE: 404 errors (file not found) is actually a successful return,
         --though you did not get a file, so trap for that
      else

         local options = {
            zipFile = event.response.filename,
            zipBaseDir = event.response.baseDirectory,
            dstBaseDir = system.DocumentsDirectory,
            listener = zipListener,
         }

         zip.uncompress( options )
      end
   end
end

local params = {}
params.progress = true
local URL = "http://omnigeekmedia.com/coronasdk/test.zip"
network.download( URL, "GET", networkListener, params, "test.zip", system.TemporaryDirectory )</pre>
<p>Let&#8217;s follow through the process step by step:</p>
<ol>
<li>When <strong>network.download</strong> finishes, the <strong>networkListener</strong> function is called.</li>
<li>After checking for and catching possible error conditions, create a table of <strong>options</strong> to pass to the <strong>zip</strong> plugin. The <strong>zipFile</strong> and <strong>zipBaseDir</strong> will be given to you in the <strong>network.download</strong> &#8220;event&#8221; table. Optionally, you can specify whether to unzip all files or just some files — see the <a href="http://docs.coronalabs.com/daily/plugin/zip/" target="_blank">documentation</a> for details.</li>
<li>Provide the destination directory as <strong>dstBaseDir</strong> and the <strong>zipListener</strong> function that you wrote (above) will handle the rest!</li>
</ol>
<hr />
<h3>In Summary&#8230;</h3>
<p>As you can see, using the <strong>zip</strong> plugin is simple! Just include the plugin in your <strong>build.settings</strong> file, set up a basic callback function, and pass a table of options to the plugin. For full details and instructions on how to use the <strong>zip.compress()</strong> and <strong>zip.list()</strong> APIs, please review the following documentation:</p>
<p><strong>Plugin Documentation (zip.*)</strong> — <a href="http://docs.coronalabs.com/daily/plugin/zip/" target="_blank">http://docs.coronalabs.com/daily/plugin/zip/</a></p>
<p>Finally, before we conclude today&#8217;s tutorial, there are just a few more important points:</p>
<ol>
<li>Currently, the <strong>zip</strong> plugin is only available to <a href="http://www.coronalabs.com/store/" target="_blank">Corona SDK Pro</a> subscribers using <a href="http://developer.coronalabs.com/downloads/daily-builds" target="_blank">Daily Build</a> #1115 and above.</li>
<li><strong>zip</strong> files can contain executable code which can be problematic, in particular on Windows machines. Please do <strong>not</strong> open <strong>zip</strong> files from unknown sources, and keep your virus scanning software up-to-date.</li>
<li>On iOS, since you are downloading easily retrievable data, Apple expects those files to go into the <strong>system.CachesDirectory</strong>.</li>
<li>On Android, remember to <strong>enable Internet access</strong> as detailed <a href="http://docs.coronalabs.com/guide/distribution/buildSettings/index.html#androidsettings" target="_blank">here</a>.</li>
</ol>
<p>Questions or comments? Please provide your input below.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coronalabs.com/blog/2013/05/21/tutorial-using-zip-plugin/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Corona Weekly Update: New Plugin Partners + Core gets lighter</title>
		<link>http://www.coronalabs.com/blog/2013/05/21/corona-weekly-update-new-plugin-partners-core-gets-lighter/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=rss</link>
		<comments>http://www.coronalabs.com/blog/2013/05/21/corona-weekly-update-new-plugin-partners-core-gets-lighter/#comments</comments>
		<pubDate>Tue, 21 May 2013 13:18:09 +0000</pubDate>
		<dc:creator>Walter</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Corona Enterprise]]></category>
		<category><![CDATA[Corona SDK]]></category>
		<category><![CDATA[Daily Build]]></category>
		<category><![CDATA[App Monetization]]></category>
		<category><![CDATA[cross promotion]]></category>
		<category><![CDATA[mobile ads]]></category>
		<category><![CDATA[plugins]]></category>

		<guid isPermaLink="false">http://www.coronalabs.com/?p=34387</guid>
		<description><![CDATA[Today, I'm happy to announce our first batch of <a href="www.coronalabs.com/resources/plugins">Corona Plugin partners</a>.

It's great partners like these that enable Corona developers to access the best new functionality and 3rd party services. In particular, today's batch span a wider variety of services from app advertising to cross-promotion and  value-exchange ads, from social campaigns to game controllers.]]></description>
				<content:encoded><![CDATA[<p>Today, I&#8217;m happy to announce our first batch of <a href="www.coronalabs.com/resources/plugins">Corona Plugin partners</a>:</p>
<ul>
<li>Sponsorpay</li>
<li>Tap for Tap</li>
<li>inneractive</li>
<li>Green Throttle</li>
<li>Carrot</li>
</ul>
<p>It&#8217;s great partners like these that enable Corona developers to access the best new functionality and 3rd party services. In particular, today&#8217;s batch span a wide variety of services from app advertising to cross-promotion and value-exchange ads, from social campaigns to game controllers.</p>
<p>You can see more information at the <a href="www.coronalabs.com/resources/plugins">Corona Plugin Directory</a>. You&#8217;ll notice a &#8220;Docs&#8221; link below each partner that&#8217;s got all the technical docs you&#8217;ll need to use the plugin in your app. In the coming days, you will see more info from these partners about their services and why you should use them.</p>
<p>Just keep in mind that, for now, you need access to daily builds to use these plugins.</p>
<p>This is just the first wave. We have more partners coming in the next few weeks, adding to the growing list of additional features and services you&#8217;ll want to use in your apps. As you can see, Corona plugins are going to play an increasingly important role in your apps.</p>
<h3>Corona core gets lighter</h3>
<p>Another things that is happening this week is that the core Corona engine is about to get lighter.</p>
<p>Last week, I talked about <a href="http://www.coronalabs.com/blog/2013/05/13/corona-weekly-update-plugins-now-beta-in-daily-builds/">our plans</a> to move certain services into plugins that currently reside in the core Corona engine.</p>
<p>That move is happening this week. In tomorrow&#8217;s daily build (<em>after</em> 1115), the following services will be moved into plugins:</p>
<ul>
<li>iAds: iOS</li>
<li>InMobi: iOS + Android</li>
<li>Inneractive: Android</li>
</ul>
<p>This will make the core even smaller than it already is.</p>
<p>We&#8217;ll also be rolling out a new &#8220;Plugins&#8221; section in our daily build docs where you can get details on the &#8216;build.settings&#8217; changes needed to use those plugins in your device builds. Again, this will start in tomorrow&#8217;s daily builds.</p>
<h3>Plugins for Enterprise</h3>
<p>Two final notes for Corona Enterprise users.</p>
<p>First, we plan to make plugin binaries available to you soon. These plugins will probably be available as a separate download. That&#8217;s because plugins will generally be the same across daily builds.</p>
<p>Second, if you are using Corona Enterprise and you require InMobi or inneractive, the corresponding plugin binaries will not be available immediately. So if you use those services, stay on 1115 or earlier for now. These will be available in the separate download I mentioned above.</p>
<p><center>* * *</center></p>
<p>We&#8217;re going to have more plugin announcements in the coming weeks, but after Memorial Day, what I&#8217;d like to get back to in the weekly updates is more eye candy. With that in mind, if you have a favorite filter effect, let me know!</p>
<p>Oh, and if you happen to be in the Big Apple today, we&#8217;re exhibiting at AppNation, <a href="http://appnationconference.com/nyc/schedule/masters-of-monetization-part-ii-free-paid-or-freemium/">hosting a panel</a> on app monetization, and also crashing the <a href="http://www.meetup.com/Corona-SDK-NYC-Meetup/">Corona NYC meetup</a> to share the latest and greatest.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coronalabs.com/blog/2013/05/21/corona-weekly-update-new-plugin-partners-core-gets-lighter/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Corona Geek #40 &#8211; Memory Management, Google IO, and Dilbert</title>
		<link>http://www.coronalabs.com/blog/coronageek/corona-geek-hangout-40/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=rss</link>
		<comments>http://www.coronalabs.com/blog/coronageek/corona-geek-hangout-40/#comments</comments>
		<pubDate>Mon, 20 May 2013 22:51:11 +0000</pubDate>
		<dc:creator>Charles McKeever</dc:creator>
				<category><![CDATA[Corona Geek]]></category>
		<category><![CDATA[Hangouts]]></category>
		<category><![CDATA[memory management]]></category>
		<category><![CDATA[texture memory]]></category>

		<guid isPermaLink="false">http://www.coronalabs.com/?post_type=coronageek&#038;p=34378</guid>
		<description><![CDATA[This week we hung out with Ed Maurina, Gerald Bailey, Jesse Warden, Matthew Chapman, and Richard Harris to discuss memory management in Corona SDK. Ed did an excellent job of explaining the sample app he created after one of our previous Hangouts where we discussed Storyboard. His app demonstrates how memory is affected when objects are set to nil at various stages of development.]]></description>
				<content:encoded><![CDATA[<p><iframe src="http://www.youtube.com/embed/qqLZZnujog4#!?rel=0" height="436" width="640" frameborder="0"></iframe></p>
<p><img class="alignright  wp-image-477" alt="Corona Geek" src="http://coronalabs.com/wp-content/uploads/2012/08/corona-geek-head-transparent-150x150.png" width="105" height="105" />This week we hung out with <a href="https://roaminggamer.com" target="_blank">Ed Maurina</a>, <a href="http://snakeheadsoftware.com" target="_blank">Gerald Bailey</a>, <a href="https://plus.google.com/b/108159899655420864045/109537902154361720350/posts" target="_blank">Jesse Warden</a>, <a href="http://www.origintech.net/" target="_blank">Matthew Chapman</a>, and <a href="http://appdevelopermagazine.com" target="_blank">Richard Harris</a> to discuss memory management in Corona SDK. Ed did an excellent job of explaining the sample app he created after one of our previous Hangouts where we discussed Storyboard. His app demonstrates how memory is affected when objects are set to nil at various stages of development. Ed agreed to post his code on GitHub, so we&#8217;ll <a href="http://downloads.roaminggamer.com/coronageek/CoronaGeekAfterTalk.zip" target="_blank">post a link to his code</a> once that is available. We also talked about the announcements at Google IO, the ongoing <a href="http://coronalabs.com/blog/2013/05/15/dilbert-the-world-famous-engineer-and-corona-labs-partner-on-a-mobile-game-competition/">Dilbert contest</a>, and <a href="http://coronalabs.com/blog/2013/05/16/update-on-corona-and-coppa-privacy-policies/">COPPA Privacy Policies</a>.</p>
<p><strong>Corona Labs T-Shirt Winner</strong></p>
<p>Congratulations to Theo Rushin, Jr. for winning this week&#8217;s Corona Labs&#8217; t-shirt. For your chance to win, follow Corona Geek on <a href="http://www.twitter.com/coronageek">Twitter</a> and <a href="http://www.facebook.com/coronageek">Facebook</a>, and complete the <a href="http://coronalabs.wufoo.com/forms/corona-geek-giveaway/" target="_blank">Corona Geek giveaway form</a>.</p>

<p>Thank you for watching, we&#8217;ll see you on next week&#8217;s Corona Geek hangout!</p>
<p><strong>Remember To Subscribe</strong></p>
<ul>
<li><a href="http://CoronaGeek.com/itunes" target="_blank">Download the Corona Geek podcast on iTunes</a></li>
<li><a href="http://CoronaGeek.com/stitcher" target="_blank">Listen to Corona Geek on Stitcher</a></li>
<li><a href="http://youtube.com/coronageek" target="_blank">Subscribe to Corona Geek on YouTube</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.coronalabs.com/blog/coronageek/corona-geek-hangout-40/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
<enclosure url="http://coronageek.coronalabs.com/cdn/corona-geek-show-40-2013-05-20-memory-management.mp3" length="42582430" type="audio/mpeg" />
		</item>
		<item>
		<title>App of the Week: Tomb Breaker</title>
		<link>http://www.coronalabs.com/blog/2013/05/20/app-of-the-week-tomb-breaker/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=rss</link>
		<comments>http://www.coronalabs.com/blog/2013/05/20/app-of-the-week-tomb-breaker/#comments</comments>
		<pubDate>Mon, 20 May 2013 20:02:29 +0000</pubDate>
		<dc:creator>Inna Treyger</dc:creator>
				<category><![CDATA[App of the Week]]></category>

		<guid isPermaLink="false">http://coronalabs.com/?p=34243</guid>
		<description><![CDATA[This week's App of the Week - Tomb Breaker - is a brand new puzzle game that was built with Corona SDK and recently graced with a 'New and Noteworthy' recognition on Apple's App Store. A year in the making, Tomb Breaker was developed by Kurt Bieg, the designer behind Simple Machine, with art by Victor Soto.]]></description>
				<content:encoded><![CDATA[<p><img src="http://coronalabs.com/wp-content/uploads/2013/05/Screen-Shot-2013-05-17-at-1.31.10-PM-148x150.png" alt="Tomb Breaker icon" class="alignleft size-thumbnail wp-image-34244" />This week&#8217;s App of the Week &#8211; Tomb Breaker &#8211; is a brand new puzzle game that was created with <a href="www.coronalabs.com/products/corona-sdk">Corona SDK</a> and recently graced with a &#8216;New and Noteworthy&#8217; recognition on Apple&#8217;s App Store. <img src="http://coronalabs.com/wp-content/uploads/2013/05/Tomb-Breaker-168x300.jpg" alt="Tomb Breaker screenshot" class="alignright size-medium wp-image-34245" />A year in the making, Tomb Breaker was developed by Kurt Bieg, the designer behind <a href="http://www.simplemachine.co/2013/05/tomb-breaker/">Simple Machine</a>, with art by Victor Soto. It&#8217;s a casual puzzle game that&#8217;s easy to learn and fun for all ages, thanks to vibrant graphics and intuitive gameplay. </p>
<p>In Tomb Breaker, your goal is to clear as many gem tiles as possible by swiping across tiles to make chains. The more tiles you clear in one swipe, the more points you’re awarded. As you collect gems and purchase game powerups, you can also score breaking crossovers, clears, and combos. And, if you’re feeling competitive, you can challenge friends on Game Center or on Facebook, or you can play against your own high score.</p>
<p>This catchy puzzle game is available for free on <a href="https://itunes.apple.com/us/app/tomb-breaker/id580673439?mt=8&#038;ign-mpt=uo%3D2">iTunes</a> &#8211; give it a play!</p>
<p><iframe width="560" height="315" src="http://www.youtube.com/embed/fj8RQd2u9y8" frameborder="0" allowfullscreen></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://www.coronalabs.com/blog/2013/05/20/app-of-the-week-tomb-breaker/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Update on Corona and COPPA, Privacy Policies</title>
		<link>http://www.coronalabs.com/blog/2013/05/16/update-on-corona-and-coppa-privacy-policies/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=rss</link>
		<comments>http://www.coronalabs.com/blog/2013/05/16/update-on-corona-and-coppa-privacy-policies/#comments</comments>
		<pubDate>Thu, 16 May 2013 18:53:22 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[Corona SDK]]></category>

		<guid isPermaLink="false">http://coronalabs.com/?p=34141</guid>
		<description><![CDATA[An important update on Corona, data collection and issues around COPPA and privacy policies.]]></description>
				<content:encoded><![CDATA[<p>In the last two days we&#8217;ve heard that a number of developers (Corona and otherwise) have questions about data collection in their apps and how this relates to COPPA. So this is a great time to do an update post on this and make completely sure all Corona developers know where we stand. We posted about <a href="http://www.coronalabs.com/blog/2012/12/04/corona-developers-and-privacy-policies/">privacy policies</a> back in December, and will also address that here.</p>
<p>I would also recommend that anyone interested in this topic read <a href="http://www.act4apps.org/what-we-know-now-coppa-and-3rd-party-services/">this blog post</a> by ACT 4 Apps for a general overview and to understand what constitutes Personally Identifiable Information.</p>
<p>I will approach this in 3 sections:</p>
<p><strong>1) Data collected by Corona Labs</strong> &#8211; We have always been very clear that we collect basic information from Corona-based apps via our &#8220;LaunchPad analytics&#8221;. The information collected includes:</p>
<ul>
<li>Device type and OS</li>
<li>An app identifier &#8211; this is a string that identifies the Corona app. It does not include any end user info.</li>
<li>App session time and lengths &#8211; this is data on the end user&#8217;s usage of the app, but not any personal info.</li>
<li>IP address &#8211; this is the IP address related to the user&#8217;s phone connection to the Internet</li>
<li>Hashed/anonymized MAC address &#8211; this is an identifier of the end user&#8217;s device</li>
</ul>
<p>Please note that we no longer collect UDIDs, although the *anonymized* MAC address does serve as a device identifier. All data collection for analytics purposes needs some type of device identifier, otherwise the data would be almost useless.</p>
<p><strong>VERY IMPORTANTLY, IT HAS ALWAYS BEEN POSSIBLE TO TURN COLLECTION OF THIS DATA OFF.</strong> This is documented in several places, but here I will direct you to <a href="http://docs.coronalabs.com/guide/basics/configSettings/index.html#analytics">the Analytics section of our Project Configuration guide</a>.</p>
<p>The way to turn this data collection off is by adding the following code to your app&#8217;s config.lua file:</p>
<p>application =<br />
{<br />
    launchPad = false,<br />
}</p>
<p>Once your app includes that line of code, CORONA LABS DOES NOT COLLECT ANY DATA from your end users&#8217; app sessions.</p>
<p>One final point on this: even in the cases when we do collect this data (i.e., when you have not turned it off), we NEVER share this data with any third parties. The data is only used as a way to give you basic analytics on your apps and by us in aggregate form to get some basic data on the Corona ecosystem.</p>
<p><strong>2) Data collected by 3rd party services</strong> &#8211; Of course, Corona allows you to use a number of 3rd party services (e.g., ad networks, analytics services, etc.). We cannot control what data those services may or may not collect. It is up to you, the app developer, to make sure you know what data those 3rd parties collect and act accordingly. </p>
<p>If you turn off the Corona &#8220;LaunchPad analytics&#8221; but still decide to use a 3rd party service, it is possible that you are sending data to those 3rd parties via their libraries/SDKs even if we (Corona Labs) are not collecting any data.</p>
<p><strong>3) Privacy policies</strong> &#8211; Finally, as we mentioned <a href="http://www.coronalabs.com/blog/2012/12/04/corona-developers-and-privacy-policies/">back in December</a>, we think it is important for all developers to know what data they are using/sending and to have privacy policies that accurately reflect this. </p>
<p>To help with this, we have published a <a href="http://www.coronalabs.com/privacy-policy/privacy-policy-for-app-users/">Privacy Policy for App Users</a> that explains what data is being collected, if any, by Corona Labs. </p>
<p>We recommend that your app have a privacy policy that lists any 3rd party services used in your app, and that links back to this Corona Labs policy &#8211; this will ensure that you are informing your users of any data that is being collected.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coronalabs.com/blog/2013/05/16/update-on-corona-and-coppa-privacy-policies/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Corona Support for Google Play Game Services</title>
		<link>http://www.coronalabs.com/blog/2013/05/15/corona-support-for-google-play-game-services/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=rss</link>
		<comments>http://www.coronalabs.com/blog/2013/05/15/corona-support-for-google-play-game-services/#comments</comments>
		<pubDate>Wed, 15 May 2013 19:56:00 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Corona SDK]]></category>

		<guid isPermaLink="false">http://coronalabs.com/?p=34047</guid>
		<description><![CDATA[We're happy to announce that support for Google Play game services is coming very soon to Corona. We worked with Google to get early access to their services and also with Chip Chain, a great Corona-based app, that supports the new functionality today. Read on!]]></description>
				<content:encoded><![CDATA[<p><img src="http://coronalabs.com/wp-content/uploads/2013/05/Chip_small2.png" alt="Chip Chain" class="alignright size-full wp-image-34051" /><img src="http://coronalabs.com/wp-content/uploads/2013/05/IO.png" alt="IO" class="alignright size-full wp-image-34052" />You may have heard the news from Google I/O earlier today about the <a href="http://www.engadget.com/2013/05/15/google-play-game-services/">new Google Play game services</a>. We&#8217;re happy to announce that we worked closely with Google, and got early access to their APIs, to build support into Corona for these new services. They are coming to a daily build very soon.</p>
<p>As a proof point and also for a Google I/O demo, we also worked with Aaron at AppAbove Games to integrate Google Play game services into his fantastic Corona-based game, <a href="http://chip-chain.com/">Chip Chain</a>. The new version of his game, which has support for the new Google functionality is <a href="https://play.google.com/store/apps/details?id=com.appabovegames.chipchain">now up on Google Play</a>. Try it out!</p>
<p>We&#8217;re excited about all the new innovation happening in gaming and related cloud services and we are working hard to make as much of it available to Corona developers as possible.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coronalabs.com/blog/2013/05/15/corona-support-for-google-play-game-services/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Wednesday FAQs: Java and Windows Simulators</title>
		<link>http://www.coronalabs.com/blog/2013/05/15/wednesday-faqs-java-and-windows-simulator/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=rss</link>
		<comments>http://www.coronalabs.com/blog/2013/05/15/wednesday-faqs-java-and-windows-simulator/#comments</comments>
		<pubDate>Wed, 15 May 2013 17:06:58 +0000</pubDate>
		<dc:creator>Tom Newman</dc:creator>
				<category><![CDATA[FAQ]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[Corona SDK]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://blog.coronalabs.com/?p=34017</guid>
		<description><![CDATA[It's Wednesday and time for another frequently asked questions (FAQs) session. Here are some FAQs about Java and the Windows Simulator.]]></description>
				<content:encoded><![CDATA[<p><img src="http://blog.coronalabs.com/wp-content/uploads/2013/01/FAQ.png" alt="FAQ Icon" class="alignright size-full wp-image-28552" />It&#8217;s Wednesday and time for another frequently asked questions (FAQs) session. Here are some FAQs about Java and the Windows Simulator.</p>
<h2>1. Java 7 is the most recent version of Java, why does Corona SDK require Java 6?</h2>
<p>Developing for Android requires Java 6, not Java 7 (according to the <a href="http://developer.android.com/index.html">Android site</a>). Corona SDK uses the Java tools for signing the APK, so we have the same requirements as if you were doing native Android development.</p>
<p>When you run Corona SDK and try to do a build, it checks to see if Java 6 is installed. If it doesn&#8217;t find Java 6, you will be prompted to install Java 6.</p>
<p>Note: Starting with Build 1103, we found a way to make Corona SDK run with Java 7, so now both the Mac and Windows Simulators can run with either Java 6 or Java 7 installed.</p>
<h2>2. I keep getting a message on my Windows machine saying Java wants to update my Java (6) to Java 7. Should I upgrade?</h2>
<p>If you are running the public build (971 or 1076), we don&#8217;t recommend running the Java updater because it may remove the JRE 6 binary files, causing Corona SDK build errors.</p>
<h2>3. I can&#8217;t build for Android &#8212; the &#8220;Key Alias&#8221; field is empty</h2>
<p>This generally means the Java 6 install is damaged. You will also get <strong>&#8220;keystore password not valid&#8221;</strong> error if you browse and select the <strong>debug keystore</strong> shipped with Corona SDK.</p>
<p>This can happen if you try to install Java 7 over Java 6 and the Java updater removes the JRE 6 (Java Runtime) binary files. We have seen this happen when you run Java (7) Updater 45. See question 5 for how to restore JRE 6.</p>
<h2>4. I can&#8217;t build for Android &#8212; I get a &#8220;Could not load &#8230;/jvm.dll, error 126&#8243; message.</h2>
<p>We added support for Java 7 in Build 1093 but it only worked correctly if you installed Java JDK7 from Oracle&#8217;s website. We found if you installed Java 7 using the Updater 45, it would remove a key DLL file, causing the above error message when trying to do a build in the Windows simulator. The solution is to use Build 1103, which now properly locates the DLL file. (This turned out to be a known Java Updater bug.)</p>
<h2>5. I&#8217;ve installed Java 7 so how do I get Corona SDK Build 1076 working again?</h2>
<p>Installing the Java 7 Updater removes the JRE 6 binary files but leaves the JRE 6 key in the Windows Registry making Corona SDK think Java 6 is installed. The solution is to re-install Java 6 JRE files. You can download JRE 6 <a href="http://www.oracle.com/technetwork/java/javase/downloads/jre6downloads-1902815.html">here</a>. Make sure you pick the 32-bit version for Windows (Windows X86).</p>
<p>Once you&#8217;ve run the Java 7 Updater and re-installed the JRE 6 files, you can build with both the public releases and the latest Corona SDK Daily Builds (starting with Build 1103).</p>
<p>That&#8217;s it for today&#8217;s questions. I hope you enjoyed them and even learned a few things!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coronalabs.com/blog/2013/05/15/wednesday-faqs-java-and-windows-simulator/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Dilbert, the World Famous Engineer, and Corona Labs Partner on a Mobile Game Competition</title>
		<link>http://www.coronalabs.com/blog/2013/05/15/dilbert-the-world-famous-engineer-and-corona-labs-partner-on-a-mobile-game-competition/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=rss</link>
		<comments>http://www.coronalabs.com/blog/2013/05/15/dilbert-the-world-famous-engineer-and-corona-labs-partner-on-a-mobile-game-competition/#comments</comments>
		<pubDate>Wed, 15 May 2013 15:27:16 +0000</pubDate>
		<dc:creator>Inna Treyger</dc:creator>
				<category><![CDATA[Announcements]]></category>

		<guid isPermaLink="false">http://coronalabs.com/?p=34009</guid>
		<description><![CDATA[If you can’t get enough of the the world famous Dilbert comic strip, you’ll love the latest Corona SDK challenge.

Scott Adams, the legendary creator of Dilbert is on the hunt for the hottest mobile game, with the beloved cartoon engineer. We’re joining forces with Dilbert and calling on the Corona SDK community to create the hottest game with Corona SDK Starter, Pro or Enterprise. This contest runs May 14 - July 12, 2013 with winners announced on July 19, 2013.
]]></description>
				<content:encoded><![CDATA[<p><img src="http://coronalabs.com/wp-content/uploads/2013/05/Dilbert-146x300.jpg" alt="Dilbert image" class="alignleft size-medium wp-image-34010" />If you can’t get enough of the the world famous <a href="http://www.dilbert.com">Dilbert</a> comic strip, you’ll love the latest Corona SDK challenge.</p>
<p>Scott Adams, the legendary creator of Dilbert is on the hunt for the hottest mobile game, with the beloved cartoon engineer. We’re joining forces with Dilbert and calling on the <a href="http://www.coronalabs.com/products/corona-sdk">Corona SDK</a> community to create the hottest game with Corona SDK Starter, Pro or Enterprise. This contest runs May 14 &#8211; July 12, 2013 with winners announced on July 19, 2013.</p>
<p>The Dilbert comic strip is known for its humor around the vices, follies and day-to-day shortcomings of the white-collar office working environment. This is your chance to take this world famous character, create a <a href="http://www.coronalabs.com/products/corona-sdk">cross-platform game</a> with Corona SDK, and as a grand prize, have an opportunity to demo your creation to Scott Adams. </p>
<p>Our Corona Labs&#8217; judging panel of experts are looking for innovation, enthusiasm and overall quality for the winning game. Not to worry, your efforts won’t go unnoticed with loads of additional prizes, including year long subscriptions to Corona SDK Pro (worth $599) and iTunes gift cards.</p>
<p>So, head over to <a href="http://www.dilbert.com">Dilbert.com</a> for a little inspiration, and get to coding! You have nearly two months to create something magical, and we’re confident the Corona community will make Scott Adams proud. Check out a <a href="http://coronalabs.com/dilbert/">complete set of rules and guidelines</a> and sign up to compete.</p>
<p>Good luck!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coronalabs.com/blog/2013/05/15/dilbert-the-world-famous-engineer-and-corona-labs-partner-on-a-mobile-game-competition/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Sprites and Image Sheets for Beginners</title>
		<link>http://www.coronalabs.com/blog/2013/05/14/sprites-and-image-sheets-for-beginners/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=rss</link>
		<comments>http://www.coronalabs.com/blog/2013/05/14/sprites-and-image-sheets-for-beginners/#comments</comments>
		<pubDate>Tue, 14 May 2013 19:46:13 +0000</pubDate>
		<dc:creator>Rob Miracle</dc:creator>
				<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Animated Sprites]]></category>
		<category><![CDATA[sprite]]></category>
		<category><![CDATA[spritesheets]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.coronalabs.com/?p=33710</guid>
		<description><![CDATA[Today's tutorial goes "back to the basics" of sprite usage and image sheets for both typical animations and image "swapping" as well. If you're new to Corona SDK or simply need to brush up on sprite usage, read further as we discuss the benefits, the basic code, and some real world examples.]]></description>
				<content:encoded><![CDATA[<p>Confession: I fear <a href="http://docs.coronalabs.com/api/library/display/newSprite.html" target="_blank">sprites</a> and <a href="http://docs.coronalabs.com/api/library/graphics/newImageSheet.html" target="_blank">image sheets</a>. I don&#8217;t know why. They do wonderful things, conserve memory, and improve performance — and yet I almost instinctively avoid them. Perhaps when I started using Corona SDK a few years ago, the original, deprecated &#8220;sprite&#8221; library felt overly complicated, so I avoided sprites and didn&#8217;t genuinely attempt to adopt the <a href="http://www.coronalabs.com/blog/2012/10/02/animated-sprites-and-methods/" target="_blank">current sprite methods</a> when they were introduced over a year ago.</p>
<p>Around the time I started using Corona SDK, there was an open source Lua module called <strong>MovieClip</strong> that I really enjoyed using. You&#8217;d simply provide a list of image file names (one image per frame) and it would load them all into memory. Then you could play them in a looping sequence, front-to-back, back-to-front, or just jump to a specific frame. MovieClip had some dark sides, however. Most obvious was that loading a whole slew of images for a &#8220;flipbook&#8221; animation was wasteful in regards to both memory and processing time. Another negative aspect was that it was open source, so people took the code and changed it to suit their needs. That sounds good in theory, but when one person built MovieClip 1.4 with feature set &#8220;X&#8221; and another developer built a different MovieClip 1.4 with feature set &#8220;Y&#8221;, nobody seemed to know which version did what. Essentially, only the author of a specific version could support it, and with no source control, the MovieClip module ran wild.</p>
<p>Although you can still find MovieClip floating around, it&#8217;s been effectively deprecated. And so, I realize that I must finally adapt to sprites and image sheets. In today&#8217;s tutorial, follow along as I get over my &#8220;fear of sprites&#8221; and show you how to use them in some interesting, practical ways.</p>
<hr />
<h3>Frequent Uses</h3>
<p>A common question for beginners is how to change the &#8220;frame,&#8221; or the source file, of an image declared with <strong>newImage()</strong> or <strong>newImageRect()</strong>. This isn&#8217;t technically allowed, but obviously we still need a method to change images on the fly. There are plenty of cases in which you might need this, including:</p>
<ul>
<li>A two-state image, i.e. a lightbulb which turns on and off.</li>
<li>Card games where some of the cards are hidden (flipped over).</li>
<li>An incrementing health bar.</li>
</ul>
<p>My first Corona-built game, <a href="http://omniblaster.omnigeekmedia.com/" target="_blank">OmniBlaster</a>, used MovieClip to control the health bar, in addition to the following game aspects:</p>
<ul>
<li>Selecting which of the three ships (images) the player is currently using.</li>
<li>Setting one of five &#8220;sensitivity&#8221; options on the settings screen.</li>
<li>Setting one of the three difficulty settings.</li>
<li>Controlling the current shields around the ship.</li>
<li>Displaying a bar graph for  the two power-up timers.</li>
<li>Displaying a bar graph to represent the current health of the ship.</li>
</ul>
<p>Fortunately, all of these can be easily accomplished with sprites. Let&#8217;s learn how&#8230;</p>
<hr />
<h3>Getting Started: Building the Image Sheet</h3>
<p>In Corona SDK, all sprites are assembled from one or more <strong>image sheets</strong>. An image sheet is merely a larger &#8220;canvas&#8221; which includes all of the animation frames for the sprite(s).</p>
<p>To create an image sheet, you can either assemble it manually using an image editor (Photoshop, the Gimp, etc.) or use an image packing tool like <a href="http://www.codeandweb.com/texturepacker/coronasdk" target="_blank">Texture Packer</a> or <a href="http://www.spritehelper.org/" target="_blank">SpriteHelper</a>. The great thing about packing tools is that they support multiple sizes of image sheets for different screen resolutions, and they pack individual images into the most compact, memory-efficient arrangement possible. In addition, Corona SDK only has to load one image file, versus a considerable number of images as was required with MovieClip.</p>
<p>As a starting point for implementing sprites, I&#8217;m going to rebuild my &#8220;health bar.&#8221; Each individual image is designed to look like an LED, with green/blue representing full health and red indicating the ship is almost destroyed. Each image is 60×20 in size and there are six frames in total, so this image sheet will be very easy to create.</p>
<a href="http://www.coronalabs.com/wp-content/uploads/2013/05/img-omni-1.png"><img class="size-full wp-image-33719 alignnone" alt="img-omni-1" src="http://www.coronalabs.com/wp-content/uploads/2013/05/img-omni-1.png" width="765" height="44" /></a>
<p>In the image editor, I simply create a canvas that is 60 pixels wide and 120 pixels tall. When I paste each frame on the canvas and progress downward, the result is this:</p>
<a href="http://www.coronalabs.com/wp-content/uploads/2013/05/img-omni-2.png"><img class="size-full wp-image-33718 alignnone" alt="img-omni-2" src="http://www.coronalabs.com/wp-content/uploads/2013/05/img-omni-2.png" width="60" height="120" /></a>
<hr />
<h3>Coding the Image Sheet</h3>
<p>Coding the sprite for the health bar (or any sprite) involves three basic steps:</p>
<ol>
<li>Create the image sheet.</li>
<li>Create the sprite and position it.</li>
<li>Play the sprite.</li>
</ol>
<p>First, let&#8217;s create the <strong>options</strong> for the image sheet:</p>
<pre>local options = {
   width = 60,
   height = 20,
   numFrames = 6
}
local healthSheet = graphics.newImageSheet( "images/health_bar.png", options )</pre>
<p>This block of code defines the parameters of the image sheet. Each frame is 60 pixels wide (<strong>width</strong>), 20 pixels tall (<strong>height</strong>), and there are 6 total frames (<strong>numFrames</strong>).</p>
<p>Next, I&#8217;ll create six <strong>sequences</strong> of frames to play — a simple animation of the health bar incrementing from zero to a certain value. In <em>OmniBlaster</em>, these sequences are used as an animated power-up toward a certain health increment.</p>
<pre>local sequenceData = {
   { name = "health0", start=1, count=1, time=0,   loopCount=1 },
   { name = "health1", start=1, count=2, time=100, loopCount=1 },
   { name = "health2", start=1, count=3, time=200, loopCount=1 },
   { name = "health3", start=1, count=4, time=300, loopCount=1 },
   { name = "health4", start=1, count=5, time=400, loopCount=1 },
   { name = "health5", start=1, count=6, time=500, loopCount=1 }
}

local healthSprite = display.newSprite( healthSheet, sequenceData )
healthSprite.x = 75
healthSprite.y = 15
statusBar:insert( healthSprite )  --"statusBar" is a display group</pre>
<p>All sequences must be identified by a unique name so you can refer to them later. In this case, I name them &#8220;health&#8221; plus a digit that indicates the life value. Then, I create the sprite using the <a href="http://docs.coronalabs.com/api/library/display/newSprite.html" target="_blank">display.newSprite</a> API and assign the sequences to the new sprite. Finally, I position the object and add it to a display group.</p>
<hr />
<h3>Animating the Health Bar</h3>
<p>In <em>OmniBlaster</em>, there&#8217;s a variable called <strong>lives</strong> which is a number from <strong>0</strong> (dead) to <strong>5</strong> (max health). When I want to animate the health bar from frame 1 to a certain destination frame, I can use the <strong>lives</strong> variable to set the sequence using basic Lua concatenation, as follows:</p>
<pre>healthSprite:setSequence( "health" .. lives )</pre>
<p>And then, playing the sprite is as simple as this:</p>
<pre>healthSprite:play()</pre>
<p>Quite simple! For sake of comparison, let&#8217;s examine the complete code that <strong>MovieClip</strong> would have required&#8230;</p>
<pre>local healthSprite = movieclip.newAnim( {"images/lives_1.png", "images/lives_2.png", "images/lives_3.png", "images/lives_4.png", "images/lives_5.png", "images/lives_0.png"}, 60, 20 )
healthSprite.x = 75
healthSprite.y = 15
statusBar:insert( healthSprite )

healthSprite:play{ startFrame=1, endFrame=lives, loop=1, remove=false }</pre>
<p>Although the setup is simple and the overall number of lines is less than the sprite method, in the next section we&#8217;ll explore how the <strong>same sprite object</strong> can be used for other purposes. Multi-purpose equates to higher efficiency and it also makes your life easier.</p>
<hr />
<h3>Image Swapping</h3>
<p>In <em>OmniBlaster</em>, I need to animate the health bar, but I often need to set the bar to a specific increment as well. For example, if all of the shields are gone and the ship takes a hit, the player loses a health point. I could have accomplished this using MovieClip, but since this tutorial is about sprites, let&#8217;s examine the same process using that method.</p>
<p>If you want to set a sprite frame to any frame in the overall sheet, logically you must create a sequence that contains <strong>all</strong> of the frames. Using the <em>OmniBlaster </em>health bar again, that sequence is <strong>&#8220;health5&#8243;</strong> — this is the only sequence that encompasses all six frames in the sheet. With this in mind, we set the sequence as follows:</p>
<pre>healthSprite:setSequence( "health5" )</pre>
<p>Then, to set the frame to a specific value, i.e from a <strong>visual</strong> increment of 4 to 3, the code is simple:</p>
<pre>healthSprite:setFrame( 4 )</pre>
<p>Why did I use <strong>4</strong> instead of <strong>3</strong>? Because if you examine the image sheet, the visual increment of three notches in the health bar is actually the <em>fourth</em> frame.</p>
<hr />
<h3>Careful Now&#8230;</h3>
<p>It&#8217;s important to understand that when you explicitly set the frame of a sprite, the integer value that you declare is related to the <strong>sequence</strong>, not the overall sheet. For example, if you configure an image sheet of six frames and a sequence that uses frames 4, 5, and 6, you must use the following to jump to frame 6:</p>
<pre>sprite:setFrame( 3 )</pre>
<p>Why? Because frame <strong>3</strong> in the <strong>sequence </strong>equates to frame <strong>6</strong> in the overall image sheet. To illustrate this, let&#8217;s use a modified version from the OmniBlaster sheet:</p>
<pre>local sequenceData = {
   { name = "health_4_to_6", start=4, count=3, time=300, loopCount=1 }
}</pre>
<p>Notice how in this new sequence, we are setting <strong>start=4</strong> and <strong>count=3</strong>, which will encompass frames 4, 5, and 6 of the overall sheet. Then, if we use (set) this sequence and want to jump to frame 6 of the overall sheet, the proper code is:</p>
<pre>healthSprite:setFrame( 3 )

--NOT--

healthSprite:setFrame( 6 )</pre>
<p>If you use the second example, Corona will issue a warning similar to this:</p>
<pre>ERROR: sprite:setFrame() given invalid index (6). Using index of 3 instead.</pre>
<p>This will not terminate/crash your app, but you should understand how to properly set frames within a sequence, or you may encounter problems when dealing with more complex animations and image sheets.</p>
<hr />
<h3>It&#8217;s All About Efficiency</h3>
<p>Notice that both of our examples above — animating and frame swapping — use the same image (sprite) <strong>object</strong>, from the same image <strong>sheet</strong>. This multi-purpose practice is efficient in two key ways:</p>
<ol>
<li><strong>Code Efficiency</strong> — creating one object allows us to declare, reference, track, and clean up our sprites much easier.</li>
<li><strong>Memory Efficiency</strong> — as a mobile developer, you need to be consistently mindful of memory usage. As I mentioned in regards to MovieClip, it was easy to use but it was generally not efficient. Creating all of those individual objects from individual image files was a resource hog in regards to both Lua memory and<strong> </strong>texture memory too. Of these two, texture memory is a far greater concern for the mobile developer. If you wish to explore texture memory and how Corona/OpenGL allocate it, please refer to <strong>Conserving Texture Memory</strong> in the <a href="http://www.coronalabs.com/blog/2013/03/12/performance-optimizations/" target="_blank">Performance Optimizations</a> tutorial.</li>
</ol>
<hr />
<h3>In Summary&#8230;</h3>
<p>As you can see, <a href="http://docs.coronalabs.com/api/library/display/newSprite.html" target="_blank">sprites</a> are not just for typical animations, but for swapping frames of a &#8220;static&#8221; image as well. Best of all,  if you optimize/pack your individual images into image sheets — and I highly recommend that you do — using sprites requires just a few more lines of setup and minimal additional effort elsewhere in code. In essence, they are flexible, efficient, and provide more control than MovieClip ever did.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coronalabs.com/blog/2013/05/14/sprites-and-image-sheets-for-beginners/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Corona Weekly Update: Plugins now beta in daily builds</title>
		<link>http://www.coronalabs.com/blog/2013/05/13/corona-weekly-update-plugins-now-beta-in-daily-builds/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=rss</link>
		<comments>http://www.coronalabs.com/blog/2013/05/13/corona-weekly-update-plugins-now-beta-in-daily-builds/#comments</comments>
		<pubDate>Tue, 14 May 2013 06:11:46 +0000</pubDate>
		<dc:creator>Walter</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Corona SDK]]></category>
		<category><![CDATA[Daily Build]]></category>
		<category><![CDATA[corona]]></category>
		<category><![CDATA[docs]]></category>
		<category><![CDATA[plugins]]></category>

		<guid isPermaLink="false">http://www.coronalabs.com/?p=33746</guid>
		<description><![CDATA[For a few weeks, we've had a closed beta to test out plugins in Corona SDK. There's more polish to be done, but we think the infrastructure is stable enough for broader use.

So today, we are going to open up that beta starting with <a href="http://developer.coronalabs.com/downloads/daily-builds">daily build</a> 2013.1106.

Okay, ready to get started?]]></description>
				<content:encoded><![CDATA[<p>For a few weeks, we&#8217;ve had a closed beta to test out plugins in Corona SDK. There&#8217;s more polish to be done, but we think the infrastructure is stable enough for broader use.</p>
<p>So today, we are going to open up that beta starting with <a href="http://developer.coronalabs.com/downloads/daily-builds">daily build</a> 2013.1106.</p>
<p>Okay, ready to get started? Two things:</p>
<p>First, download daily build 2013.1106 or after. Do not use previous builds, as you may experience issues.</p>
<p>Second, you need to tell Corona that you are using plugins so the Corona Simulator can perform device builds properly. This boils down to adding a few lines in your &#8216;build.settings&#8217; file. Head over to our new <a href="http://docs.coronalabs.com/daily/plugin/index.html">Corona plugin documentation</a> site. Each plugin has its own documentation page that describes what you need to add in &#8216;build.settings&#8217; for that plugin.</p>
<p>For example, here&#8217;s what you do for inneractive:</p>
<pre>settings = {
    -- Add the following to enable inneractive support:
    plugins = {
        ["CoronaProvider.ads.inneractive"] = { publisherId = "com.inner-active", },
    },
}</pre>
<p>That&#8217;s it! You&#8217;re ready to go.</p>
<p>Right now, we&#8217;re making the following initial set of plugins available:</p>
<ul>
<li><strong><a href="http://docs.coronalabs.com/daily/plugin/ads-admob/index.html">AdMob</a></strong>: iOS + Android</li>
<li><strong><a href="http://docs.coronalabs.com/daily/plugin/greenthrottle/index.html">Greenthrottle</a></strong>: Android</li>
<li><strong><a href="http://docs.coronalabs.com/daily/plugin/ads-inneractive/index.html">Inneractive</a></strong>: iOS (Apple API compliant). Android is already in Corona&#8217;s core but will soon move into a plugin.</li>
<li><strong><a href="http://docs.coronalabs.com/daily/plugin/openssl/">OpenSSL</a></strong>: iOS + Android + Mac. Win support is coming.</li>
<li><strong><a href="http://docs.coronalabs.com/daily/plugin/openudid/index.html">OpenUDID</a></strong>: iOS-only.</li>
<li><strong><a href="http://docs.coronalabs.com/daily/plugin/zip/uncompress.html">Zip</a></strong>: iOS + Android + Mac + Win.</li>
</ul>
<p>Note that some of the plugins only work on device, while can work within the Corona Simulator.</p>
<p>Also, we are going to move some services into plugins that currently reside in the core Corona engine. That means in a future build, if you want to use these services in your apps, you&#8217;ll need to add a few lines to your build.settings:</p>
<ul>
<li><strong>Flurry</strong>: iOS + Android</li>
<li><strong>iAds</strong>: iOS</li>
<li><strong>InMobi</strong>: iOS + Android</li>
<li><strong>Inneractive</strong>: Android</li>
</ul>
<p>This is just the beginning. In the coming days and weeks, you&#8217;re going to see more plugins from us and from our growing list of partners!</p>
<p>As we&#8217;re still at Beta, please let us know any issues in the subscriber-only <a href="http://forums.coronalabs.com/forum/602-plugins-gluon/">Plugins Beta forum</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coronalabs.com/blog/2013/05/13/corona-weekly-update-plugins-now-beta-in-daily-builds/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>
