差沙的密碼 -- SSHWSFC's code
          閱讀本Blog請(qǐng)自備塑料袋一只
          posts - 14,  comments - 59,  trackbacks - 0

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

          posted on 2008-02-26 13:49 差沙 閱讀(4811) 評(píng)論(4)  編輯  收藏 所屬分類: bew

          FeedBack:
          # re: Air+Ext小試一下
          2008-02-26 16:39 | 久城
          很好,學(xué)習(xí)了,同樣關(guān)注Extjs的版本升級(jí)。

          LZ加油,期待進(jìn)一步的研究。  回復(fù)  更多評(píng)論
            
          # re: Air+Ext小試一下
          2008-07-11 20:06 | 開機(jī)
          我在Ext2.1 api里怎么看不到 Ext.sql.Connection,是版本不對(duì)嗎?  回復(fù)  更多評(píng)論
            
          # re: Air+Ext小試一下
          2008-10-13 17:46 | asd
          asdsfsdf  回復(fù)  更多評(píng)論
            
          # re: Air+Ext小試一下
          2009-07-11 11:22 | cow
          Ext,sqlite怎么處理事務(wù)呢?  回復(fù)  更多評(píng)論
            

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          這家伙很懶,但起碼還是寫了一句話。

          <2008年2月>
          272829303112
          3456789
          10111213141516
          17181920212223
          2425262728291
          2345678

          常用鏈接

          留言簿(8)

          隨筆分類

          隨筆檔案

          文章分類

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 舒兰市| 柘城县| 安吉县| 茂名市| 海林市| 保康县| 忻城县| 金堂县| 伊吾县| 沅江市| 福鼎市| 汽车| 乐昌市| 七台河市| 丹寨县| 闽侯县| 黄骅市| 南通市| 册亨县| 贡嘎县| 垣曲县| 正镶白旗| 澄城县| 澎湖县| 永定县| 衡阳县| 玉门市| 航空| 手机| 奎屯市| 温泉县| 合作市| 湾仔区| 庄浪县| 马关县| 凤台县| 唐海县| 台江县| 安福县| 大同市| 洪雅县|