今天看到Air1.0和Ext2.0.2的發(fā)布消息,很是興奮,要知道Ext的每個(gè)版本升級(jí)都是很實(shí)惠的。
Ext2.0.2的這次升級(jí)主要是針對(duì)Air的支持,看來他們的關(guān)系是越來越近了,我也借機(jī)小試了一下Air。
簡(jiǎn)單說說Air的開發(fā)過程:
1.先要下載jre 和 airSDK
2.jre就不說了,airSDK也是簡(jiǎn)單的解壓一下便可。
可以看看SDK下面的bin目錄,一共倆文件,一個(gè)adl一個(gè)adt,adl是用來測(cè)試的,adt使用編輯發(fā)布的(ADT怎么讓我想起來android了)
3.創(chuàng)建一個(gè)普通的目錄作為項(xiàng)目目錄。OK,可以寫頁(yè)面了。就是寫html js flash什么的,都可。
4.編寫一個(gè)xml文件,名字不限。內(nèi)容嘛~~~~
看看這個(gè)文件,airSDK\templates\descriptor-template.xml 里面有詳細(xì)的解釋,拿過來改改即可,給一個(gè)例子:
<?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.運(yùn)行airSDK\bin\adl.exe (那個(gè)創(chuàng)建的xml文件名),運(yùn)行即可。
PS:我一般用eclipse來編輯,用外部命令的工具來運(yùn)行adl,很方便。
簡(jiǎn)單的說了一下Air的開發(fā)方法后,我們來簡(jiǎn)單的看一下Ext都對(duì)Air提供了什么支持。
1.Ext.air.FileProvider
Ext提供狀態(tài)保存的功能,在對(duì)AIr的支持中Ext實(shí)現(xiàn)了一個(gè)Provider,這個(gè)Provider把狀態(tài)保存在本地目錄的一個(gè)文件里。使用方法如下:
// 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即可,這個(gè)操作一般在onReady里面執(zhí)行。當(dāng)然需要你先創(chuàng)建一個(gè)ext.state文本文件,在程序根目錄下即可。這樣ext的應(yīng)用運(yùn)行時(shí),窗口等大小的調(diào)整,位置之類的調(diào)整都能保存下來了。很方便。
這里包裝的Air代碼主要是:
air.File.applicationStorageDirectory.resolvePath
air.FileStream
等
2.Ext.air.NativeWindow
Ext可以調(diào)用Air實(shí)現(xiàn)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(); } }] });
我們可以看到,其中最吸引人的是系統(tǒng)托盤的功能,可以方便的指定系統(tǒng)托盤的各種屬性。
這里包裝的主要是:
window.runtime.flash.html.HTMLLoader.createRootWindow
air.Screen.mainScreen.visibleBounds
3.Ext.sql.Connection
這個(gè)是重頭戲,對(duì)db的支持,我們知道Air的DB是采用sqlite3來實(shí)現(xiàn)的。Ext封裝了Air的db操作,簡(jiǎn)化統(tǒng)一了一些,而且提供了Store的支持,非常強(qiáng)大:
讓我們簡(jiǎn)單看一下用法:
首先取得connection
var conn = Ext.sql.Connection.getInstance();
而后打開db
conn.open('ext.db');//這里的文件如果不存在會(huì)自動(dòng)創(chuàng)建
創(chuàng)建Table
conn.createTable({ name: 'user', key: 'userId', fields: [ {name: 'userId', type:'string'}, {name: 'name', type:'string'}, {name: 'pwd', type:'string'}, {name: 'email', type:'string'} ] });
取得一個(gè)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);
感覺使用上還是蠻不錯(cuò)的,大家可以一點(diǎn)點(diǎn)試試看。
值得一提的是,在源碼中發(fā)現(xiàn)Connection這里設(shè)計(jì)成了工廠的模式,Connection是一個(gè)偽接口,實(shí)現(xiàn)除了Air的還有GoogleGear的,會(huì)根據(jù)所處環(huán)境選擇,灰常的好。
功能還在研究中,有心得了一點(diǎn)點(diǎn)給大家分享,
PS:打算搞一個(gè)iphone的信息管理軟件練練手。反正都是sqlite的