让我们现在就开始快速的了解一下Corona SDK。
下载教程文件
HelloWorldTutorial.zip
Hello World
学习CoronaSDK唯一最好的方法就是动手编写一个应用程序。我们用来编写程序的语言叫做Lua。根据传统,我们急需编写一些简单Lua代码,来打印“Hello World”。
让我们开始吧!你需要一个文本编辑器来编写你的应用程序。然后,你把文件保存在某个文件夹下,一边Corona模拟器运行它,并显示你要的结果。
在文本编辑器中,输入以下内容:
print( “Hello World” )
然后保存这个文件为main.lua,放在某个可以容易找到的文件夹中。通常每个程序都应该有自己的文件夹。
为了运行该程序,你需要启动Corona模拟器。所有的Corona SDK文件应该在\Applications\Corona\中。(可以在 Getting Started Guide 中获得关于如何安装Corona SDK的信息)
双击Corona Terminal图标如下图。
这将会启动一个控制台窗口并且打开一个文件对话框。在对话框中,找到你的main.lua文件,并且点击Open按钮。
这时候你会看到“Hello World”出现在控制台窗口中。
你也会看到一个空白的模拟器窗口,看上去象一个真实的iPhone。在这个例子中,iPhone屏幕保持空白,因为我们的程序只是在控制台输出一个字符串而已。
好,现在让我们解释一下程序是怎么工作的吧。这个应用程序从main.lua文件中启动。模拟器载入该文件,然后按照其中包含的指令行事。通常,一个应用程序包含语句和变量。语句提供关于想要执行的操作和计算;而变量通常是用来保存需要计算的值。
在这个程序中,我们使用了一个叫做print的函数。一个函数就是执行一些任务的一系列指令的集合。你传给函数的输入部分叫做参数。一些函数还会返回结果。在这个例子中的print,它所做的就是把参数作为字符串输出到控制台。
模拟器 vs 控制台
为什么“Hello World”只是显示在控制台窗口,而不是模拟器窗口中呢?那是因为print就是被设计为向控制台输出信息。它的目标就是输出关于你的程序发生了什么事的诊断信息。通常,控制台窗口让你可以,观察由模拟器造成的警告和错误信息,或者打印你自己要的信息。
在模拟上显示Hello World
为了让字符串显示在模拟器的屏幕上,我们需要使用来自Corona图形库的不同函数。库就是一些有用且功能相关的函数集合。为了在模拟器上显示“Hello World”,你需要添加下面两行:
local textObject = display.newText( "Hello World!", 50, 50, nil, 24 )
textObject:setTextColor( 255,255,255 )
让我们解释一下,display库中的一个函数newText返回了一个对象,这个对象表示显示在屏幕上的文本。
进一步说,在这个例子中,你可以认为newText属于display库。这种关系就是众所周知的属性关系。所以如果要访问display的newText属性,你必须用点。因此,你应该写成“display.newText”而不是“newText”。
setTextColor函数是一个对象方法。它使用一个着色的语法,表示它和你创建出来的text对象相关。在这个例子中,text对象默认是没有颜色的,所以我们需要赋于它RGB通道值。这些数字的范围在0-255之间,换句话说,我们每个通道需要255个值。
快速原型
关于Corona SDK一个最重要的事情,是它能够快速修改,并且立刻看到修改后的效果。
让我们回到前面的例子种,看看它如何工作。你也可以使用例子代码中的“HelloWorld”工程。启动模拟器,选择你的程序所在的文件夹,然后点击open。
现在用你的文本编辑器打开main.lua文件,试着修改setTextColor的三个参数。例如下面这样:
local textObject = display.newText( "Hello World!", 50, 50, nil, 24 )
textObject:setTextColor( 255, 0, 0 )
现在,保存这个文件,然后回到模拟器。在文件菜单, (File > Relaunch) 或者用快捷键 ⌘R (command-R)。这将会重新加载你的main.lua文件,而无需重启模拟器。注意,文本的颜色发生了什么样的改变。上面这个版本,文本应该变成红色了。
当你开发你的应用程序时,你将会发现你经常做这类事。你将会在启动器中加载你的app,然后对你的main.lua文件做些修改,再切换回到模拟器,重新加载运行你的代码来看看结果。这使得修改和查看结果变得容易多了,从而减少了因为重启模拟器耽误的时间和造成的麻烦。
让我们创建一个按钮,来增加一些交互性。例如点击按钮随机修改文本的颜色。在你的“HelloWorld”工程中,在你的main.lua中添加下面行,来加载一个图片:
local button = display.newImage( "button.png" )
button.x = display.contentWidth / 2
button.y = display.contentHeight - 50
这会加载一个叫做button.png的图片,并且放置在屏幕底部中心位置。它使用display另一个函数(display.newImage)。这个函数会返回一个image对象,我们将它保存在button变量中。我们可以叫这个变量任何名字,但是button这个名字看起来更加自然,因为我们将会把这个image看作一个button。
这个image对象有一些我们可以修改的内置属性,如图片中心在屏幕的x,y坐标(相对于屏幕的左上角)。
为了获得屏幕底部的位置,我们使用屏幕的显示属性display.contentWidth和display.contentHeight来帮助我们确定image的位置。
为了让image变成一个实际的按钮,我们需要给它增加一些事件。例如,我们将会让image负责“tap”事件(有点类似桌面电脑中的鼠标单击)。当你添加下面这些行到main.lua底部以后,你就可以点击图片,来改变文本的颜色。
function button:tap( event )
local r = math.random( 0, 255 )
local g = math.random( 0, 255 )
local b = math.random( 0, 255 )
textObject:setTextColor( r, g, b )
end
button:addEventListener( "tap", button )
让我们看看它如何工作。上面这段代码分成两个部分。第一部分为image对象按钮定义个了一个对象监听器。一个对象监听器(通常也叫table listener)就是一个对象方法,其名称和事件名称相匹配。在这个例子中,我们的方法为tap。冒号表示对象方法的语法定义。
第二个部分为我们注册对象监听器来接收“tap”事件。幸运的是,image对象按钮(象display库创建的所有对象一样),都有一个内置的方法addEventListener。允许我们创建一些交互。因为它是对象方法,image对象变量button出现在冒号的左边,而对象方法addEventListener在右边。第一个参数是事件的名称,而第二个参数是image对象本身。
当用户轻击图片,系统发现一个对象监听器被注册。在对象中查找名叫tap的方法,并调用之。在我们的tap对象方法的实现中,我们生成3个随机数(0-255)并用他们生成新的文本颜色。
让我们在每次用户轻击按钮的时候,产生一些动画和添加一些声音进去。用“HelloWorld2”项目开始,并添加下面行到main.lua中去,一边文本能够垂直向下移动100像素:
transition.to( textObject, { time=1000, y=textObject.y+100 } )
这里,我们使用transition库。 (see Animation).
我们添加一些声音,把代码加入tap方法内:
function button:tap( event )
local r = math.random( 0, 255 )
local g = math.random( 0, 255 )
local b = math.random( 0, 255 )
textObject:setTextColor( r, g, b )
media.playEventSound( “beep.caf” )
end
button:addEventListener( “tap”, button )
我们需要media库来提供多媒体支持。
就这么简单
以上就是Corona的快速入门了。还有更多可以探索的东西,比如加速计、获取GPS信息、启用基于位置的服务,在数据库中存储数据,等等等等。
希望你已经尝到Corona开发酷炫应用和游戏的甜头。如果你想要了解更多,可以去 Overview 。
或者如果你喜欢阅读图书,check the book list 可以在线或者本地,去购买有关的书籍。