今天看到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
差沙 閱讀(4810)
評論(4) 編輯 收藏 所屬分類:
bew