移动APP开发最佳选择–跨平台开发工具Corona SDK

  随着App市场爆炸性的发展,如何快速开发出高质量的App也成为一个重要的议题。目前两主流大移动装置平台为Android与iOS,为了扩增市场与满足使用者的需求,同时开发App于这两大不同平台是势在必行的。然而Android与iOS所使用的语言与开发工具全然不同,若想要两者兼备代表着必须维护两套不同的项目,无论开发、除错或测试都会需要两倍以上的心力。

庆幸的事,目前市面上提供了许多跨平台的开发工具,让使用者只需要撰写一套程序代码就可以将App同时发布于不同的平台。知名的跨平台开发工具包括Phone Gap、App Accelerator、Unity 3D、Adobe Flash等等。每个同的跨平台开发工具都有其特色,适合不同的开发者与开发不类型的App。而本篇文章将介绍一款跨平台的软件开发工具-Corona SDK。虽然目前在业内鲜为人知,但其国外的社群已经茁壮到一定的程度,而其网络上的各种资源也是相当丰富。这款开发工具最强大之处在于可以快速开发出酷炫的的游戏以及各种不同类型的App,关键在于其使用一套易于学习的语言Lua作为开发基础,并且提供近千个强大API让开发者可以轻易撰写出复杂的特效或功能,我们将在接下来的段落中详细介绍其优点与特色。

Corona SDK,不是啤酒
Corona SDK对大部分人来说相当陌生,可能第一时间想到的是便利超商贩卖的啤酒,其实Corona SDK在很久以前就已经引起了世界的注意,那是因为一位14岁的小男孩利用其撰写了一个名为Bubble Ball的免费游戏,该游戏打败Angry Bird并在iTunes Store蝉联两周下载量冠军。这个消息让众人相当惊讶,因为开发App并不是一件相当容易的事,而一位14岁的小男孩居然可以透过Corona SDK写出高质量的游戏,也因此让让人们开始感到好奇Corona SDK究竟是什么东西。
Corona SDK是由两位Adobe公司离职员工所创办,他们都在曾Adobe公司担任重要的角色,其中一位更是Flash Lite Team的首席工程师。他们离职后随即在2007年成立Corona Labs,并在2009年发布了Corona SDK 1.0,当时尚未有跨平台的功能,只能针对iPhone进行开发。一直到了2010年其发布了Corona SDK 2.0以及Corona Game Edition Beta,开始可以支持跨平台并且提供各种方便撰写游戏的API。

Corona SDK的优点
1.简单易学
Corona SDK所使用的语言为Lua,而Lua是一套轻量级的脚本语言,本身语法相当简易直觉,Corona SDK包装了各种API让用户可以透过Lua语言呼叫直接使用。假设原生语言需要10行程序代码才能完成的事情,Corona SDK可以将这件事简化到一行程序代码。少量程序代码的好处是让开发者可以更专注于App内容的设计,而更少的程序代码也代表着更清楚易懂的程序架构与更少的除错时间。

2.完善的API支持
Corona SDK提供了各种完善的API让开发者可以轻易的使用手机硬件的本身功能如:地理位置系统、加速度计、罗盘等等,而针对其他额外的功能如推播讯息、广告、In App Purchase等等,Corona SDK通通做了完善的支持。甚至针对社群方面,也有Facebook的API可以呼叫。

3.强大的游戏API
Corona SDK最大的卖点就是其对游戏功能的支持。开发者下载安装完Corona SDK之后不需再做任何额外的环境设定即可开始使用其内建的功能开发游戏。其支持的游戏功能包括:物理引擎、Sprite Sheet、动画、绘图处理等等,而这些游戏功能API的语法也相当直觉易用,对于快速开发游戏而言是一大利器。

4.丰富的在线资源
虽然Corona SDK的网络社群并没有办法和Android与iOS相提并论,但是官方对于社群的维护相当重视,在官网提供了一个讨论版”Share Code”,让资深的开发人员可以把自己撰写好的Sample Code分享。该讨论板大部分的Sample Code保持良好的质量与清楚的说明,让初学者可以轻松的使用这些范例。当使用者碰到任何问题时,官方的也往往会在第一时间响应说明。

实战Corona SDK
接下来我们将透过范例程序代码来介绍Corona SDK的内容与特色,读者可以透过简单的范例了解Corona SDK的运作方式,以及其对游戏方面的支持。下列范例中我们将先介绍Corona基本的语法与函数调用,接着将介绍Corona最强大的功能之一-物理引擎。

(1)基本功能
(1.1) Hello World
不免俗的第一个范例程序还是Hello World,在Corona SDK精简的于法之下,只需要一行程序代码即可完成:

local myTextObject = display.newText( “Hello World!”, 50, 50, “Arial”, 30 )

程序代码解析:
display是Corona SDK所提供的API,可以用来产生文字、图案、线条、抓取屏幕以及各种针对显示对象的操作,简而言之就是负责处理与呈现有关的功能。而display.newText则会产生一个text对象,我们宣告一个局部变量myTextObject来指向这个新产生出来的对象,这样之后才有办法删除或回收这个text对象。而display.newText这个方法当中第一个参数代表显示的文字讯息,第二与第三个参数代表着X与Y坐标的位置,第四个参数代表着字型,最后一个参数则代表着字号。下图是执行测试后的结果,这样就完成了最基本的Hello World。
移动开发
(1.2) Text Color Changer
接下来我们将Hello World范例程序增加一点变化性,只要用户用手指点击屏幕就可以随机变换”Hello World”字体的颜色。

local myTextObject = display.newText( “Hello World!”, 50, 50, “Arial”, 30 )

function screenTap()
local r = math.random( 0, 255 )
local g = math.random( 0, 255 )
local b = math.random( 0, 255 )
myTextObject:setTextColor( r, g, b )
end

display.currentStage:addEventListener( “tap”, screenTap )
程序代码解析:
在第3~8行我们宣告了一个函式screenTap(),用来处理屏幕点击事件。screenTap()一接收到屏幕点击事件,会先透过math.random随机产生红绿蓝三种颜色的数值,并透过这些数值设定myTextObject的字体颜色。接着我们透过display.currentStage可以抓取到目前屏幕画面,再利用addEventListner可以监听点击事件”tap”,当产生点击事件时会自动呼叫我们所定义的screenTap()函式,这样就完成了一个可以切换字体颜色的基本范例。参考下图为输出结果:

移动开发

(2)物理引擎 Corona SDK最棒的功能之一大概就是物理引擎了,因为Corona SDK内建Box 2D这套物理引擎,开发者完全不需作额外的环境设定,透过几行程序代码就可以实作出物理引擎的效果,接下来马上透过范例来看如何使用物理引擎。

(2.1) Sky Faller
这个范例中我们将会设定两个拥有物理属性的对象,分别是由上往下掉落的箱子以及静止不动的地板。程序一开始箱子会在屏幕正上方,而物理引擎开始运作之后箱子便会因为重力而掉落,与地板接触之后产生碰撞并滚落一旁。实作的程序代码如下:

local physics = require( “physics” )
physics.start()

local sky = display.newImage( “bg_sky.png” )

local ground = display.newImage( “bg_ground.png” )
ground.x = 160; ground.y = 445

physics.addBody( ground, “static”, { friction=0.5, bounce=0.3 } )

local crate = display.newImage( “crate.png” )
crate.x = 180; crate.y = -50; crate.rotation = 5

physics.addBody( crate, { density=3.0, friction=0.5, bounce=0.3 } )

程序代码解析:
在程序代码的第1~2行,分别代表产生一个可以控制物理引擎的对象并开始使用物理引擎。关键词requir代表产生一个类别对象,而require内的关键词”physics”是Corona SDK针对物理引擎所提供的API类别。而透过require(“physics”)产生物理引擎的对象之后,便可以进行各种物理引擎进行操作,如start、stop等等…。
第4行与第6行则是透过display.newImage这个API来产生图片对象,分别设定背景图天空与地板。第7行则是设定地板图片对象的位置,让它处于屏幕下方,这样箱子才可以由上往下坠落在其上方。第9行则是透过我们之前宣告的physics对象让地板拥有物理的特性,而这边的关键词”static”让地板可以静止不动,”friction”与”bounce”则可以设定地板的摩擦例与弹性。最后的在11~14行的部份我们则是产生了箱子的图片对象,同样地透过physics这个对象让它拥有物理引擎特性。当一切设定完毕按下执行便可以看到箱子由上往下坠落并与地板碰撞弹跳的效果。

3
(3)实作小结
以上范例中,我们实作了Corona SDK的基本的操作以及其重要特色物理引擎,可以发现透过短短几行程序代码Corona SDK就可以帮我们完成许多事情。若想透过原生的语言如Java、Objective C在15行内写出一个物理引擎的范例,那几乎是不可能的。因此Corona SDK在制作游戏或者App方面,的确提供了一个更快速的管道。

Corona SDK的美中不足
虽然Corona SDK有许多优点与特色,但仍然有一些待改善的地方。第一点是Corona SDK没有自己的整合开发环境,通常开发Lua都是透过简单的文本编辑器,因此没办法进行自动编译除错,往往只能在执行期才能知道错误的地方。第二点依然与开发环境有关,Corona SDK没有办法透过传输线直接执行于手机装置,若想要实机测试,只能先将程序代码透过布署的方式编译成.apk或.app再安装于手机装置。而布署时必须与期官方网站联机认证使用者身分,这将导致在没有网络的情况下将无法实机测试App。

结论
Corona SDK是一套简单易学的跨平台开发工具,对于想要快速开发游戏的开发者来说是一个非常棒的选择。其简易的语法与强大的API可以帮助开发者在最短时间内开发出酷炫的游戏或各种类型的App。使用Corona SDK开发App不用担心其对于装置操作方面的支持,因为不管是任何装置的操作如加速度计、地理位置系统、指南针等等其都有良好的支持。Corona SDK另外也支持In App Purchase、广告、Facebook等等额外的功能,整体来说Corona SDK在功能性支持方面来讲有接近满分的表现。其美中不足之处在于缺乏专属的整合开发环境,也无法透过传输线直接在实机执行测试,这些都是Corona SDK必须加强改善的地方。

移动信息化交流QQ群:一号群:211029692 二号群:344692795 CIO交流群:316076815(需认证)

移动化问答社区:wenda.yidonghua.com



1 星2 星3 星4 星5 星 (还没有打分,快来打分吧!)
Loading...
 
已有 0 条评论
返回顶部

无觅相关文章插件,快速提升流量