|
2011年6月的编程语言排行榜Lua语言一军突起,一举进入前十名。这与一年前苹果决定在ios系统上使用Lua语言密不可分。但是,你了解如何用Lua语言在ios上开发应用吗?这里将向各位介绍Lua语言的ios应用开发框架Wax,其中在ios平台上无比火爆的《愤怒的小鸟》就是由Lua语言用Wax开发的。全文共分两部分,第一部分将带您深入探讨Wax具有的一些好处,同时演示把Lua与Xcode 4和ios软件开发工具包(SDK)集成起来必不可少的实际步骤。第二部分将逐步介绍如何用Wax构建一个简单的应用程序,显示Twitter上的当前趋势话题列表,可以用按钮来更新内容。
Wax是什么?
Wax for iPhone这种框架在开发时,旨在把Lua脚本语言和原生Objective-C应用编程接口(API)结合起来。这意味着,你可以从Lua里面,使用任何和全部的Objective-C类及框架。
从技术上来讲,Wax结合了Objective-C类和原生C代码。Lua语言嵌入了C语言,然后Objective-C类并入到其中。
为什么使用Wax?
Wax是免费的、开源的。与其他一些基于Lua的移动开发解决方案不同,Wax是个开源框架,只需要你花一点点时间就可以上手,不需要花钱。不喜欢Wax的工作方式,或者发现实施方面的缺陷?源代码可免费获取,你总是可以改动源代码,以满足自己的需要。
可以利用原生API。这意味着,为教Objective-C而编写的教程很容易由Lua for Wax来改动和编写。这还意味着,你的应用程序在外观感觉上总是如同原生应用程序,不过又得到了用Lua这种高效脚本语言编写代码可以节省时间的好处。
可以使用Xcode。这意味着,模拟器和设备部署都轻而易举,不会轻易与未来的ios版本决裂。
可以利用所有现有的Objective-C库。如果你有一个Objective-C类是以前编写的,不需要改动,就可以将它用在Lua中只要把它放入到Xcode。Three20之类的库也是一样。只要按照正常指令来添加库,就可以使用Lua代码访问它们。
可以利用Wax Lua模块。Wax有几个内置的Lua模块,使得异步HTTP请求和JavaScript对象标注(JSON)创建/解析极其容易而快速(因为模块是用C编写的)。
没必要管理内存。不再需要操心内存分配之类的事务。Wax为你处理这一切。
Lua类型自动转换成对应的Objective-C类型,反之亦然。 这意味着,如果你调用了需要NSString和NSInteger的某个方法,但传送了Lua字符串和Lua整数,Wax会为你搞定转换工作。这种转换功能强大,甚至可以处理复杂的Objective-C特性,比如选择器。
你可以利用所有上述特性。不需要精挑细选。你获得所有特性!
OK,实在太棒了!我该如何安装Wax?
首先你需要Xcode和iPhone SDK。要是你还没有这些东西,赶紧弄一份!
用Xcode创建项目
我们先创建一个新的基于Windows的项目,名为WaxApplication。别忘了把设备设置成iPhone:
通过Finder浏览到你保存该项目的文件夹。创建三个新的文件夹:wax、scripts和Classes。你的文件夹看起来应该像这样:
设置Wax(第一部分,处理文件)
首先,下载源代码的压缩包。Wax放在GitHub上(https://github.com/probablycorey/wax),那样下载源代码就很容易。从这里下载压缩包。
现在,解压缩刚下载的文件。浏览到刚解压缩的文件夹。它会有probablycorey-wax-124ca46之类的名称。
你的屏幕现在看起来应该像这样:
现在,执行下列操作:
◆ 拷贝lib和bin文件夹,把它们粘贴到位于WaxApplication项目文件夹里面的wax文件夹。
◆ 将xcode-template/Classes/ProtocolLoader.h拷贝到WaxApplication项目文件夹。
◆ 拷贝xcode-template/scripts/文件夹,将它放到WaxApplication项目文件夹里面。
◆ 打开WaxApplication项目文件夹里面的wax/lib/extensions/文件夹。删除SQLite和xml文件夹,下图所示:
你的屏幕应该看起来像这样:
设置Wax(第二部分,配置项目)
现在用Finder选择Classes、scripts和wax文件夹,把它们拖入到Xcode项目中。把它们放到显示Wax Application和1 target, ios SDK X.X的那个条下方。不要勾选显示Copy items into destination group’s folder(if needed)的复选框。点击完成。
现在点击显示Wax Application和1 target, ios SDK 4.3的那个条。接着采取下列步骤:
◆ 在右边窗格中,寻找Targets标题,点击WaxApplication。点击Build Phases(构建阶段)选项卡。点击Copy Bundle Resources(复制捆绑资源),清除所有lua文件。
◆ 在右下角,先点击Add Build Phase(添加构建阶段),再点击Add Run Script(添加运行脚本)。
◆ 将Shell设成/bin/zsh
◆ 将Shell下面的文本区域设成$PROJECT_DIR/wax/lib/build-scripts/copy-scripts.sh。
你的屏幕现在看起来像这样:
改动main.m
在左边窗格中,打开名为WaxApplication的文件夹。接下来,打开Supporting Files文件夹。接着,打开main.m,把文件的内容换成如下:
//这是发生奇迹的地方!// Wax并不使用nib文件来装入主视图,一切在AppDelegate.lua文件里面完成
#import <UIKit/UIKit.h>
#import "wax.h"
#import "wax_http.h"
#import "wax_json.h"
#import "wax_filesystem.h"
int main(int argc, char *argv[]) {
NSAutoreleasePool * pool =[[NSAutoreleasePool alloc] init];
wax_start("AppDelegate.lua", luaopen_wax_http, luaopen_wax_json, luaopen_wax_filesystem, nil);
int retVal = UIApplicationMain(argc, argv, nil, @"AppDelegate");
[pool release];
return retVal;
}
it知识库:开发&quot;愤怒的小鸟&quot;的Lua语言:Wax框架详解,转载需保留来源!
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。