关于Corona
如果你正在做iOS应用,或者关注过iOS开发,那么一定听说过Corona这个名字。
在苹果修改了app审核策略,允许使用第三方语言开发应用之后,Corona,这个曾经只能在破解系统上玩一玩的项目终于被更多人所关注,售价也从99美元涨到了299美元,当然现在又降到了149美元.不过看看他长长的Showcase列表就不难发现,这也确实是一个值得关注的引擎。
简单来说,使用Corona的优势主要有这么几点:
◆不需要使用复杂的Objective-C,不需要经历繁琐的编译过程,使用更加简单的,解释型的Lua语言来开发应用
◆可以用你的Windows PC来开发iOS应用,当然如果要发布到AppStore还是需要一台iMac或MacBook (Pro)
◆iOS与Android平台的***融合,应用移植不再是噩梦
◆丰富的API以及第三方库的集成,让应用开发变得更加简单快捷
开发方法
如果你已经下载安装了Corona SDK,那么应该也注意到了,在CoronaSDK目录下只有一个Corona Simulator和一个Terminal,还有一个debuger,没有编辑器。是的,Corona的开发还是主要信赖于代码编写,当然在Corona网站的Tools里能够找到图形化的开发工具,也可以尝试一下。
运行模拟器的方法也有三种:
◆直接运行Corona Simulator,一般在演示运行app的时候使用,你将看不到任何打印出来的错误信息
◆运行Corona Terminal,这是日常开发最常用的方法,它将会开启模拟器,同时会出现一个终端窗口用于显示打印的调试信息和错误信息
◆运行debugger,这将会开启模拟器和一个带交互功能的终端,在需要调试时使用,当然你需要熟悉gdb之类的调试工具
当模拟器运行起来的时候,从File — Open找到你需要测试的app的main.lua并打开,这时在模拟器窗口上会出现app画面,同时终端窗口会出现打印信息。就像下图这样:
Hello World
学习的***方法是实践,所以让我们从最简单的一个例子开始,创建一个app。是的,所有的例子都是从“世界你好!”开始的。
使用一个你最喜欢的文本编辑器,创建一个文本文件,敲入以下内容
- print("Hello World")
然后把文件保存 为main.lua,注意app的主文件必须是main.lua,***是把这个app的所有相关文件放到一个单独的目录下。一般情况下每个app都应该有其独立的目录,比如这里我们就叫他Sample1。
然后按照上面所说的,在Corona Simulator中File –> Open找到刚刚保存的main.lua文件并打开,如果一切顺利的话,你将什么也看不到。是的,什么也看不到!不过你要是通过Simulator打开的模拟器,那么在终端窗口里还是能够看到些东西,就像下面这样:
那个Hello World就是我们刚刚输出的。
Simulator vs Terminal
刚刚我们的print(“Hello World”)语句确实产生了作用,不过这显示不是我们所要的效果,我们希望的是能够在app里输出一行文字,但是现在到了终端窗口里面。那么,模拟器与终端有什么区别呢?
简单来说,终端窗口主要是用来输出调试/警告/错误信息用的,虽然在这正式的app里看不到,但对于我们的开发阶段还是很有用的,我们不需要使用复杂的debugger就能够了解程序现在运行的怎么样了。
Hello World on the Simulator
如果要在模拟器界面上输出文本,我们需要另外的函数,这些函数都来自于 Corona graphics library。
在这里,我们可以这样做:
- local textObject = display.newText("Hello World", 50, 50, nil, 24)
- textObject:setTextColor(255,255,255)
再次在模拟器上运行一下这个程序,你将会看到下面的结果:
是的,这正是我们想要的。关于上面两行代码的细节就不过多描述,如果你是一个程序员,这没有什么难的,如果你不是,好吧,lua语言确实不怎么难。
需要注意一下的是display.newText和textObject:setTextColor,这两个函数调用,一个用的是.号,一个用的是:号,这是lua语言的两种函数调用方式,或者说:号调用其实是.调用的语法简化形式,具体的描述还是需要通过lua手册来了解。
使用Corona SDK的一个好处,或者说是使用lua这类动态语言的一个好处就是你可以很方便的看到修改后的效果,而不需要像Objective-C那样经历编译-链接过程。当你修改了main.lua文件,保存它,这时Simulator会主动提醒你文件已更新,是否需要重新加载,选“是”就能立即看到修改后的效果。当然,你也可以在运行过程中主动要求重新加载app,使用Command -R即可,不需要等待编译,也不需要关闭模拟器再重新打开。