Corona包含了最新版本(v2.02)的LuaSocket库。这些Lua模块实现的常见的网络协议,例如SMTP,HTTP和FTP。也包括一些特性支持如MIME,URL操作和LTN12。
LuaSocket是一个被预装到corona中的扩展库的集合。为了加速程序的启动,他们不会默认被自动加载。为了使用他们,你必须显式的加载每一个,以使库函数可以在你的代码中使用。为了做到这一点,你应该require他们。并且吧下面代码放在你的lua文件的顶部。
local socket = require("socket")
或
local http = require("http")
完整的 LuaSocket 文档可以在这里被找到:
http://www.tecgraf.puc-rio.br/~diego/professional/luasocket/reference.html
尽管这些库被构建到Corona里,你需要使用Lua的require语法来确保函数在你的代码中可用。这在前面的例子中已经展示了,或者从全球Lua社区中提供的一些其他在线代码范例。
简单图片下载
这个例子使用 http.request 函数来下载一个PNG文件,将其保存到一个本地目录,然后吧它显示为一个image。jpeg文件也可以用同样的方法下载然后显示。
-- 加载要用的 LuaSocket 模块
local http = require("socket.http")
local ltn12 = require("ltn12")
-- 为保存数据创建本地文件
local path = system.pathForFile( "hello.png", system.DocumentsDirectory )
myFile = io.open( path, "w+b" )
-- 请求远程文件,并保存数据到本地文件
http.request{
url = "http://developer.anscamobile.com/demo/hello.png",
sink = ltn12.sink.file(myFile),
}
-- 显示本地文件
testImage = display.newImage("hello.png",system.DocumentsDirectory,60,50);
当在Corona模拟器中测试这个代码的时候,你mac电脑的 Documents 目录就相当于你iPhone上的应用程序本地目录。作为结果,你将看到下载的PNG文件被存储在你的 Documents目录里。
在 Android 上启用网络访问
为了启用android设备上的网络访问,你需要添加 android.permission.INTERNET 权限到你的项目的build.setting文件里, 如同下面所示。关于 build.settings更多的信息,在Corona开发者文档参看 Build Configuration: build.settings 。
1
2
3
4
5
6
7
8
9
10
-- build.settings
settings =
{
androidPermissions =
{
"android.permission.INTERNET",
},
}
范例
如何使用这个库的例子,请在Corona SDK的范例代码目录里查看 SimpleImageDownload 项目。