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

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

          FeedBack:
          # re: Air+Ext小試一下
          2008-02-26 16:39 | 久城
          很好,學習了,同樣關注Extjs的版本升級。

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

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          這家伙很懶,但起碼還是寫了一句話。

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

          常用鏈接

          留言簿(8)

          隨筆分類

          隨筆檔案

          文章分類

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 句容市| 安泽县| 资溪县| 大石桥市| 娱乐| 上饶市| 深水埗区| 宁津县| 永新县| 鄱阳县| 博兴县| 鱼台县| 正镶白旗| 石景山区| 改则县| 吉安县| 松桃| 宣恩县| 鄂托克旗| 麻城市| 扎囊县| 乡宁县| 枞阳县| 凤凰县| 锦屏县| 临夏县| 和林格尔县| 威远县| 察哈| 玛多县| 泽州县| 正蓝旗| 高青县| 丰城市| 安陆市| 苍山县| 葫芦岛市| 太仆寺旗| 荃湾区| 林州市| 秦皇岛市|