今天看到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的