WEB开发网      濠电姷鏁告繛鈧繛浣冲洤纾瑰┑鐘宠壘閻ょ偓銇勯幇鍫曟闁稿鍠愰妵鍕冀閵娧佲偓鎺楁⒒閸曨偄顏柡宀嬬畱铻e〒姘煎灡绗戦梻浣筋嚙濮橈箓顢氳濠€浣糕攽閻樿宸ュΔ鐘叉啞缁傚秹宕滆绾惧ジ寮堕崼娑樺缂佹宀搁弻鐔风暋閻楀牆娈楅梺璇″枓閺呯姴鐣疯ぐ鎺濇晝闁靛牆妫欓蹇旂節閻㈤潧浠﹂柛銊ョ埣楠炴劙骞橀鑲╋紱闂佽宕樼粔顔裤亹閹烘挸浜归梺缁樺灦閿曗晛螞閸曨垱鈷戦柟鑲╁仜婵″ジ鎮楀☉鎺撴珖缂侇喖顑呴鍏煎緞濡粯娅囬梻浣瑰缁诲倿寮绘繝鍥ㄦ櫇闁稿本绋撻崢鐢告煟鎼淬垻鈯曢柨姘舵煟韫囥儳绋荤紒缁樼箖缁绘繈宕橀妸褌绱濋梻浣筋嚃閸ㄤ即宕弶鎴犳殾闁绘梻鈷堥弫鍌炴煕閳锯偓閺呮瑧妲愬Ο琛℃斀闁绘劕妯婇崵鐔封攽椤旇棄鍔ら摶鐐烘煕閺囥劌澧柛娆忕箻閺屽秹宕崟顒€娅g紓浣插亾濠㈣泛顑囩粻楣冩煙鐎涙ḿ绠橀柨娑樼У椤ㄣ儵鎮欓鍕紙闂佽鍠栫紞濠傜暦閹偊妲诲┑鈩冨絻椤兘寮诲☉銏犖╅柕澶堝労閸斿绱撴担绋库偓鍝ョ矓瑜版帒鏋侀柟鍓х帛閺呮悂鏌ㄩ悤鍌涘 ---闂傚倸鍊烽悞锔锯偓绗涘厾娲煛閸涱厾顔嗛梺璺ㄥ櫐閹凤拷
开发学院手机开发iPhone 开发 Lua编写iOS程序 阅读

Lua编写iOS程序

 2012-10-08 13:42:08 来源:WEB开发网 闂傚倸鍊风欢姘缚瑜嶈灋闁圭虎鍠栫粻顖炴煥閻曞倹瀚�闂傚倸鍊风粈渚€骞夐敓鐘插瀭闁汇垹鐏氬畷鏌ユ煙閹殿喖顣奸柛搴$У閵囧嫰骞掗幋婵冨亾閻㈢ǹ纾婚柟鐐灱濡插牊绻涢崱妤冃℃繛宀婁簽缁辨捇宕掑鎵佹瀸闂佺懓鍤栭幏锟�濠电姷鏁告慨顓㈠箯閸愵喖宸濇い鎾寸箘閹规洟姊绘笟鈧ḿ褍煤閵堝悿娲Ω閳轰胶鍔﹀銈嗗笂閼冲爼鍩婇弴銏$厪闁搞儮鏅涙禒褏绱掓潏鈺佷槐闁轰焦鎹囬弫鎾绘晸閿燂拷闂傚倸鍊风欢姘缚瑜嶈灋闁圭虎鍠栫粻顖炴煥閻曞倹瀚�  闂傚倸鍊烽懗鑸电仚缂備胶绮〃鍛村煝瀹ュ鍗抽柕蹇曞У閻庮剟姊虹紒妯哄闁诲繑姘ㄩ埀顒佸嚬閸撶喎顫忓ú顏勫瀭妞ゆ洖鎳庨崜浼存⒑闁偛鑻晶顔剧磼婢跺﹦绉虹€殿喖顭锋俊姝岊槷闁稿鎹囧Λ鍐ㄢ槈濞嗗繑娈橀梻浣风串缂嶁偓濞存粠鍓熼崺鈧い鎺戝€归弳顒勬煕鐎n亷韬€规洑鍗冲鍊燁槾闁哄棴绠撻弻銊╂偆閸屾稑顏�
核心提示:图 1: 我的 Corona 'IDE'从左至右(反时针方向):Corona模拟器、Emacs的两个窗口(源代码窗口和项目目录窗口)、Corona 终端(输出调试信息),想要在物理硬件上运行程序,Lua编写iOS程序(3),使用Corona 模拟器的Openfor Build命令,要以iOS编译,收费每

图 1: 我的 Corona 'IDE'


从左至右(反时针方向):Corona模拟器、Emacs的两个窗口(源代码窗口和项目目录窗口)、Corona 终端(输出调试信息)。

想要在物理硬件上运行程序,使用Corona 模拟器的Openfor Build命令。要以iOS编译,你应该提供一个Provisioning Profile(开发或部署)——没错,你并不需要IDP帐号——这两个文件随同app代码和资源一同上传到Ansca公司的服务器上,然后将编译结果返回给你。要以Android编译,你应当有适当的签名证书。然后随着编译过程把你的代码传到Ansca的服务器上。你不必安装AndroidSDK。我没有太深入地研究,但编译后的.apk文件和.app文件已经包含了所有你Lua代码以某种方式处理过的东西。短暂的查看后表明,那不是标准的编译后的Lua字节码,但应该是类似的格式。

Corona事件系统可以处理触摸(包括多点触摸),访问GPS和加速器,处理动画以及自定义事件。它还有一个强大的图形系统,允许你绘制圆、矩形和文本。最近还增加了折线,允许你绘制多边形。你可以显示图片。Corona允许你把这些对象组合在一起然后对他们进行变换。列表4,摘自太阳系模拟器的代码片段,展示了组合多个图形对象的简单例子。其他Corona支持的特性还包括声视频播放,加密算法库,LuaSocket网络库,SQLite存取库LuaSQLite等。还能访问本地组件包括textfield、alert和activityindicator。你还可以用webview做诸如登录屏幕之类的事情,有一个示例程序提供了一个库,可以连接到Facebook。我最近看到有一个游戏(很贵)使用了Box2D物理引擎、角色和一些OpenFeint的功能(类似排行榜)。

列表 4: 太阳系应用代码片段

function new(params)

local color =params.color or planet_colors[random(#planet_colors)]

local radius =params.radius or planetRadius()

local planet =display.newGroup()

planet.theta = 0

local x = params.x -ox

local y = params.y -oy

planet.orbital_radius = sqrt(x*x+y*y)

local body =display.newCircle(x + ox, y + oy, radius, radius)

body:setFillColor(unpack(color))

planet:insert(body,true)

planet.body = body

planet.delta_theta =(40/planet.orbital_radius) * 0.1

return planet

end

把table作为函数参数传递,可以使用命名参数并提供默认值。因此会有 local radius = params.radius orplanetRadius() 这样的写法。

Corona为你做了许多,但同时也有许多不足。最大的问题是对本地控件的访问限制。由于Corona模拟器的限制,它对本地控件的访问是糟糕的。在模拟器中,本地alerts和activityindicators用OSX equivalents实现而不是iOS widgets实现的。textfield、textbox以及web popups在模拟器运行时是不可用的。这在开发时让人痛苦。

最后,除了ANSCA标准以外,无法访问O-CAPI。不仅是大量的标准库,而且第3方库也无法使用,如Three20或 mobileads 这样的APIs。当然,随着Corona Android版本的发布,你可能不想访问OC API因为它限制你的应用程序跨平台的能力(或者增加了复杂性)。最好是通过Lua的CAPI来扩展,就像是许多跨平台的项目一样。

我在ANSCA 小组在他们论坛上的讨论非常有用。随着2.0版本(2010.9)的发布,Corona向每位开发者每年收取249美金。对于游戏版,收费每开发者每年349美金。Ansca公司的网站暗示游戏版的价格只是预览版的。这意味着当正式版发布时价格将会更高。

上一页  1 2 3 4 5 6  下一页

Tags:Lua 编写 iOS

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接