System Library
system.getInfo( param )返回应用程序所运行的系统的信息。第一个参数param是个字符串,用来确定返回什么。param的有效值如下:
• "name" 返回设备的人类可读的名称。在iPhone上,就是在iTunes上显示的手机名称,比如 "Steve's iPhone".
• "model" 返回人类可读的模型名,如 "iPhone".
• "deviceID" 返回设备唯一的ID,例如IMEI或类似的数字
• "environment" 返回应用程序运行的环境,有效值可以是:
• "simulator" Corona 模拟器
• "device" 设备或者平台特定的模拟器 (例如 Xcode simulator)
• "platformName" 返回平台名称,例如操作系统名称:
• "Mac OS X"
• "iPhone OS"
• "Android"
• "platformVersion" 返回一个字符串,用来描述平台的版本。有时候是如此,有时候也不是,比如Droid X目前返回"2.1-update1"。
• "version" 返回Corona模拟器关于对话框上写的Corona版本
• "build" 返回Corona模拟器关于对话框上写的Corona构建字符串。
• "textureMemoryUsed" 返回纹理内存的用法(字节)。在手机开发中纹理内存渐渐成为最严重的资源限制,因为其在一般内存用完之前先用完。
system.getPreference( category, name )返回一个字符串偏好值。category的有效值是:
• "ui" 是普通应用程序级的偏好。在这个category中,传入 "language" 作为name参数,可以获得应用程序的偏好语言。
• "locale" 用于全局本地化偏好。在这个category中,name参数的有效值包括 "country", "identifier", 和 "language"。
system.getTimer() 返回应用程序启动以来,所经过的毫秒数。
system.openURL( url )打开一个url。注意,我们可以略微改变一下。
对iPhone支持的url格式有:
• Mail links: mailto:nobody@mycompany.com
• Phone links: tel:415-867-5309
• Web links: http://www.anscamobile.com
system.pathForFile( filename [, baseDirectory] )用系统定义的目录作为参考,生成一个绝对路径(参看下面的 System-defined directories)。第二个可选的参数 baseDirectory,可以用来指定构造全路径时参考的基准目录。默认值是 system.ResourceDirectory。如果基准目录是 system.ResourceDirectory,并且生成的路径指向一个不存在的文件,则返回nil。
system.setAccelerometerInterval( frequency )设置请求加速计事件被的频率。Corona中的最小频率是10Hz(无警告),最大是100Hz,但是实际到达的最大值可能取决于硬件。对开发者来说不幸的是,测试显示如果请求值超过设备允许的值,导致的行为是变幻莫测的。对iOS一个合理的最大值应该是设备帧刷新的间隔(通常30或60Hz)。加速计事件会大量消耗电池,所以只有当你的游戏需要更快的响应时,你才去提高频率。通常尽量保持一个低的频率,尽可能增加电池周期。
system.setIdleTimer( enabled )控制是否启用idle timer。如果enabled为true,则timer将被激活(默认);禁用则false。当激活时,idle timer会让屏幕变暗,当没有用户激活(例如触摸屏幕)发生时甚至会让设备休眠。
system.setLocationAccuracy( distance )设置位置事件所需的精度,一般是距离,单位米。注意,实际精度依赖于设备的能力或平台。在iPhone上,精度限制是一个离散的距离:<10, 10, 100, 1000和3000。更高的精度(更小距离)会消耗更多的电池,所以使用尽量大的距离,可以节省电池周期。
system.setLocationThreshold( distance )设置多少米距离必须被走完,直到下一次位置事件被发送。因为位置事件涉及硬件,会消耗电池,所以为了节省电池周期应使用尽量大的距离门槛。
system.vibrate()震动手机。
System-defined directories
下面是被用于 system.pathForFile() 的基准目录的常量。
system.DocumentsDirectory应该存放在需要在应用程序会话间持久的数据。在模拟器里,用户的documents目录,被当作这个目录。“~/Documents”
system.TemporaryDirectory是一个临时目录。被写在这个目录里的文件并不保证,下一次应用程序会话的时候还存在。也许还在,也许不在了。
system.ResourceDirectory 是一个存放所有应用程序资产的地方。在模拟器里,这对应于你工程里的assets目录。例如这个文件夹就是display.newImage()查找图片文件的默认目录。注意:你的app永远不能在这个目录里,创建文件,修改文件,或添加文件。这样做,将会阻止device验证你的应用程序的完整性;有时设备将会把你的应用程序作为恶意软件并且拒绝运行你的应用程序。
注意
system.ResourceDirectory, 类似这些,在android上是不存在的。Android应用程序都被打包在一个.apk文件里,zip文件格式,并且不能作为普通文件被读取。资产一般按如下分类:
• 图片,用本地Android APIs 直接加载。
• 音频,也用本地Android APIs 直接加载
• 你的Corona app想要访问的其他文件
在iOS上, system.pathForFile( "data.txt", system.ResourceDirectory ) 返回应用程序资源束中一个文件的路径。这是一个文件夹以及其中可以读的文件。然而在android中,应用程序被分发到一个.apk文件中。不可能使用普通的文件IO来访问其内容。为了允许Corona App在android上包含一般的数据文件, system.pathForFile增加了一个行为。它从zip文档中拷贝资源文件到应用程序关联的私有存储目录中,然后返回那个文件的路径。注意在实际设备上的存储可能是有一定限制的。你不应该对大文件使用这个机制,并且如果设备的空间耗尽,数据拷贝也可能失败。