让我们现在就开始快速的了解一下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 / 2button.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 )endbutton: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 可以在线或者本地,去购买有关的书籍。

Solar2DCorona(一) - Hello World相关推荐

最新文章

  1. Https协议/SSL协议
  2. 安卓入门系列-08四大组件之Activity
  3. aspnet是前端还是后端_项目开发中无法回避的问题:前端和后端如何合作和并行工作?...
  4. GStreamer(一)
  5. MKcms4.4.3仿品优影视网站系统完整开源版自动采集可设置视频收费
  6. Symfony 框架实战教程——第一天:创建项目(转)
  7. 进出仓原理_通达信浪口主图+窥窃天机副图+进出仓副图强强组合
  8. linux系统中配置NFS实现文件共享
  9. C/C++[codeup 1926]EXCEL排序
  10. matlab仿真PID,使用simulink笔记,暨入门教程
  11. 车型数据导入excel
  12. Android netd和Framework以及netd和kernel之间的通信
  13. 3G UMTS与4G LTE核心网(一):移动核心网基础
  14. (附源码)spring boot心理健康线上咨询系统 毕业设计 031539
  15. 2020-08-31第一次机器人课
  16. strcasecmp函数用法
  17. 联想X260 win10 系统降级 Win7 方法
  18. 使用H5中的video标签时,页面中间显示“暂停”图标;点击播放,图标消失;点击暂停,图标出现(play、pause、ended)
  19. 荣耀v40轻奢版鸿蒙系统,差异化的生存策略:荣耀V40轻奢版有点东西
  20. vue SSR : 原理(一)

热门文章

  1. c语言 在有n个元素的数组s中查找书名为a的书,问题:单选(2分) 已定义float a[5];,则数组a可引用的元素有( )。...
  2. 智慧矿山无人驾驶模块
  3. 进入TP-Link路由器之后利用快捷键F12查看星号路由密码的方法
  4. windows软件卸载工具Geek Uninstaller免安装版
  5. HTML期末大作业`关于在线电影主题网站设计——腾龙电影(3页) HTML+CSS+JavaScript 学生DW网页设计作业成品
  6. 《UniDAC 基础》 【菜头】 翻译 (全)
  7. 微信朋友圈点赞测试点【杭州多测师】【杭州多测师_王sir】
  8. 柏力纪德:成功对接类目小二的关键是什么
  9. 现代信息系统的企业驱动力
  10. Parameter-FreeSpatialAttentionNetworkforPersonRe-Identification