今天看到Air1.0和Ext2.0.2的发布消息,很是兴奋,要知道Ext的每个版本升级都是很实惠的。
Ext2.0.2的这次升级主要是针对Air的支持,看来他们的关系是越来越近了,我也借机小试了一下Air。
简单说说Air的开发过程:
1.先要下载jre 和 airSDK
2.jre就不说了,airSDK也是简单的解压一下便可。
可以看看SDK下面的bin目录,一共俩文件,一个adl一个adt,adl是用来测试的,adt使用编辑发布的(ADT怎么让我想起来android了)
3.创建一个普通的目录作为项目目录。OK,可以写页面了。就是写html js flash什么的,都可。
4.编写一个xml文件,名字不限。内容嘛~~~~
看看这个文件,airSDK\templates\descriptor-template.xml 里面有详细的解释,拿过来改改即可,给一个例子:
<?xml version="1.0" encoding="UTF-8"?>
<application xmlns="http://ns.adobe.com/air/application/1.0.M6">
<id>examples.html.HelloWorld</id>
<version>0.1</version>
<filename>HelloWorld</filename>
<initialWindow>
<content>HelloWorld.html</content>
<visible>true</visible>
<width>400</width>
<height>200</height>
</initialWindow>
</application>
5.运行airSDK\bin\adl.exe (那个创建的xml文件名),运行即可。
PS:我一般用eclipse来编辑,用外部命令的工具来运行adl,很方便。
简单的说了一下Air的开发方法后,我们来简单的看一下Ext都对Air提供了什么支持。
1.Ext.air.FileProvider
Ext提供状态保存的功能,在对AIr的支持中Ext实现了一个Provider,这个Provider把状态保存在本地目录的一个文件里。使用方法如下:
// Initialize the state provider
Ext.state.Manager.setProvider(new Ext.air.FileProvider({
file: 'ext.state',
// if first time running
defaultState : {
mainWindow : {
width:400,
height:200,
x:10,
y:10
}
}
}));
制定Provider为Ext.air.FileProvider即可,这个操作一般在onReady里面执行。当然需要你先创建一个ext.state文本文件,在程序根目录下即可。这样ext的应用运行时,窗口等大小的调整,位置之类的调整都能保存下来了。很方便。
这里包装的Air代码主要是:
air.File.applicationStorageDirectory.resolvePath
air.FileStream
等
2.Ext.air.NativeWindow
Ext可以调用Air实现Native的窗口。使用方法如下:
var win = new Ext.air.NativeWindow({
id: 'mainWindow',
instance: window.nativeWindow,
minimizeToTray: true,
trayIcon: 'ext-air/resources/icons/extlogo16.png',
trayTip: 'Simple Tasks',
trayMenu : [{
text: 'Open Simple Tasks',
handler: function(){
win.activate();
}
}, '-', {
text: 'Exit',
handler: function(){
air.NativeApplication.nativeApplication.exit();
}
}]
});
我们可以看到,其中最吸引人的是系统托盘的功能,可以方便的指定系统托盘的各种属性。
这里包装的主要是:
window.runtime.flash.html.HTMLLoader.createRootWindow
air.Screen.mainScreen.visibleBounds
3.Ext.sql.Connection
这个是重头戏,对db的支持,我们知道Air的DB是采用sqlite3来实现的。Ext封装了Air的db操作,简化统一了一些,而且提供了Store的支持,非常强大:
让我们简单看一下用法:
首先取得connection
var conn = Ext.sql.Connection.getInstance();
而后打开db
conn.open('ext.db');//这里的文件如果不存在会自动创建
创建Table
conn.createTable({
name: 'user',
key: 'userId',
fields: [
{name: 'userId', type:'string'},
{name: 'name', type:'string'},
{name: 'pwd', type:'string'},
{name: 'email', type:'string'}
]
});
取得一个Table
var userDao = conn.getTable('user','userId');
查询
var users = userDao.select();//这里可以写条件式
添加
var newuser = {
userId : 'sshw',
name : 'sshwsfc',
pwd : 'test',
email : 'sshwsfc@gmail.com'
}
userDao.insert(newuser);
感觉使用上还是蛮不错的,大家可以一点点试试看。
值得一提的是,在源码中发现Connection这里设计成了工厂的模式,Connection是一个伪接口,实现除了Air的还有GoogleGear的,会根据所处环境选择,灰常的好。
功能还在研究中,有心得了一点点给大家分享,
PS:打算搞一个iphone的信息管理软件练练手。反正都是sqlite的
posted on 2008-02-26 13:49
差沙 阅读(4789)
评论(4) 编辑 收藏 所属分类:
bew