﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-差沙的密码 -- SSHWSFC's code-随笔分类-bew</title><link>http://www.blogjava.net/sshwsfc/category/11582.html</link><description>1=1</description><language>zh-cn</language><lastBuildDate>Tue, 26 Feb 2008 09:18:43 GMT</lastBuildDate><pubDate>Tue, 26 Feb 2008 09:18:43 GMT</pubDate><ttl>60</ttl><item><title>Air+Ext小试一下</title><link>http://www.blogjava.net/sshwsfc/archive/2008/02/26/182206.html</link><dc:creator>差沙</dc:creator><author>差沙</author><pubDate>Tue, 26 Feb 2008 05:49:00 GMT</pubDate><guid>http://www.blogjava.net/sshwsfc/archive/2008/02/26/182206.html</guid><wfw:comment>http://www.blogjava.net/sshwsfc/comments/182206.html</wfw:comment><comments>http://www.blogjava.net/sshwsfc/archive/2008/02/26/182206.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/sshwsfc/comments/commentRss/182206.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sshwsfc/services/trackbacks/182206.html</trackback:ping><description><![CDATA[<p>今天看到Air1.0和Ext2.0.2的发布消息，很是兴奋，要知道Ext的每个版本升级都是很实惠的。</p> <p>Ext2.0.2的这次升级主要是针对Air的支持，看来他们的关系是越来越近了，我也借机小试了一下Air。</p> <p>简单说说Air的开发过程：<br></p> <p>1.先要下载jre 和 airSDK</p> <p>2.jre就不说了，airSDK也是简单的解压一下便可。</p> <blockquote> <p>可以看看SDK下面的bin目录，一共俩文件，一个adl一个adt，adl是用来测试的，adt使用编辑发布的（ADT怎么让我想起来android了）</p></blockquote> <p>3.创建一个普通的目录作为项目目录。OK，可以写页面了。就是写html js flash什么的，都可。</p> <p>4.编写一个xml文件，名字不限。内容嘛～～～～</p> <blockquote> <p>看看这个文件，airSDK\templates\descriptor-template.xml 里面有详细的解释，拿过来改改即可，给一个例子：</p> <hr> <pre><span style="color: #0000ff">&lt;?</span>xml version="1.0" encoding="UTF-8"<span style="color: #0000ff">?&gt;</span>
<span style="color: #0000ff">&lt;</span><span style="color: #800000">application</span> <span style="color: #ff0000">xmlns</span>=<span style="color: #0000ff">"http://ns.adobe.com/air/application/1.0.M6"</span><span style="color: #0000ff">&gt;</span>
    <span style="color: #0000ff">&lt;</span><span style="color: #800000">id</span><span style="color: #0000ff">&gt;</span>examples.html.HelloWorld<span style="color: #0000ff">&lt;/</span><span style="color: #800000">id</span><span style="color: #0000ff">&gt;</span>
    <span style="color: #0000ff">&lt;</span><span style="color: #800000">version</span><span style="color: #0000ff">&gt;</span>0.1<span style="color: #0000ff">&lt;/</span><span style="color: #800000">version</span><span style="color: #0000ff">&gt;</span>
    <span style="color: #0000ff">&lt;</span><span style="color: #800000">filename</span><span style="color: #0000ff">&gt;</span>HelloWorld<span style="color: #0000ff">&lt;/</span><span style="color: #800000">filename</span><span style="color: #0000ff">&gt;</span>
    <span style="color: #0000ff">&lt;</span><span style="color: #800000">initialWindow</span><span style="color: #0000ff">&gt;</span>
        <span style="color: #0000ff">&lt;</span><span style="color: #800000">content</span><span style="color: #0000ff">&gt;</span>HelloWorld.html<span style="color: #0000ff">&lt;/</span><span style="color: #800000">content</span><span style="color: #0000ff">&gt;</span>
        <span style="color: #0000ff">&lt;</span><span style="color: #800000">visible</span><span style="color: #0000ff">&gt;</span>true<span style="color: #0000ff">&lt;/</span><span style="color: #800000">visible</span><span style="color: #0000ff">&gt;</span>
        <span style="color: #0000ff">&lt;</span><span style="color: #800000">width</span><span style="color: #0000ff">&gt;</span>400<span style="color: #0000ff">&lt;/</span><span style="color: #800000">width</span><span style="color: #0000ff">&gt;</span>
        <span style="color: #0000ff">&lt;</span><span style="color: #800000">height</span><span style="color: #0000ff">&gt;</span>200<span style="color: #0000ff">&lt;/</span><span style="color: #800000">height</span><span style="color: #0000ff">&gt;</span>
    <span style="color: #0000ff">&lt;/</span><span style="color: #800000">initialWindow</span><span style="color: #0000ff">&gt;</span>
<span style="color: #0000ff">&lt;/</span><span style="color: #800000">application</span><span style="color: #0000ff">&gt;</span></pre>
<p>
<hr>

<p></p></blockquote>
<p>5.运行airSDK\bin\adl.exe (那个创建的xml文件名)，运行即可。</p>
<p>PS:我一般用eclipse来编辑，用外部命令的工具来运行adl，很方便。</p>
<p>简单的说了一下Air的开发方法后，我们来简单的看一下Ext都对Air提供了什么支持。</p>
<p>1.Ext.air.FileProvider</p>
<blockquote>
<p>Ext提供状态保存的功能，在对AIr的支持中Ext实现了一个Provider，这个Provider把状态保存在本地目录的一个文件里。使用方法如下：</p>
<hr>
<pre><span style="color: #008000">// Initialize the state provider</span>
Ext.state.Manager.setProvider(<span style="color: #0000ff">new</span> Ext.air.FileProvider({
	file: 'ext.state',
	<span style="color: #008000">// if first time running</span>
	defaultState : {
		mainWindow : {
			width:400,
			height:200,
			x:10,
			y:10
		}
	}
}));</pre>
<p>
<hr>

<p></p>
<p>制定Provider为Ext.air.FileProvider即可，这个操作一般在onReady里面执行。当然需要你先创建一个ext.state文本文件，在程序根目录下即可。这样ext的应用运行时，窗口等大小的调整，位置之类的调整都能保存下来了。很方便。</p>
<p>这里包装的Air代码主要是：</p>
<p>air.File.applicationStorageDirectory.resolvePath</p>
<p>air.FileStream</p>
<p>等</p></blockquote>
<p>2.Ext.air.NativeWindow</p>
<blockquote>
<p>Ext可以调用Air实现Native的窗口。使用方法如下：</p>
<hr>
<pre>	<span style="color: #0000ff">var</span> win = <span style="color: #0000ff">new</span> Ext.air.NativeWindow({
		id: 'mainWindow',
		instance: <span style="color: #0000ff">window</span>.nativeWindow,
		minimizeToTray: <span style="color: #0000ff">true</span>,
		trayIcon: 'ext-air/resources/icons/extlogo16.png',
		trayTip: 'Simple Tasks',
		trayMenu : [{
			text: 'Open Simple Tasks',
			handler: <span style="color: #0000ff">function</span>(){
				win.activate();
			}
		}, '-', {
			text: 'Exit',
			handler: <span style="color: #0000ff">function</span>(){
				air.NativeApplication.nativeApplication.exit();
			}
		}]
	});</pre>
<p>
<hr>

<p></p>
<p>我们可以看到，其中最吸引人的是系统托盘的功能，可以方便的指定系统托盘的各种属性。</p>
<p>这里包装的主要是：</p>
<p>window.runtime.flash.html.HTMLLoader.createRootWindow</p>
<p>air.Screen.mainScreen.visibleBounds</p></blockquote>
<p>3.Ext.sql.Connection</p>
<blockquote>
<p>这个是重头戏，对db的支持，我们知道Air的DB是采用sqlite3来实现的。Ext封装了Air的db操作，简化统一了一些，而且提供了Store的支持，非常强大：</p>
<p>让我们简单看一下用法：</p>
<p><strong><em>首先取得connection</em></strong></p>
<p>var conn = Ext.sql.Connection.getInstance();</p>
<p><strong><em>而后打开db</em></strong></p>
<p>conn.open('ext.db');//这里的文件如果不存在会自动创建</p>
<p><strong><em>创建Table</em></strong></p>
<hr>
<pre>        conn.createTable({
            <span style="color: #0000ff">name</span>: 'user',
            key: 'userId',
            fields: [
			    {<span style="color: #0000ff">name</span>: 'userId', type:'string'},
			    {<span style="color: #0000ff">name</span>: '<span style="color: #0000ff">name</span>', type:'string'},
			    {<span style="color: #0000ff">name</span>: 'pwd', type:'string'},
			    {<span style="color: #0000ff">name</span>: 'email', type:'string'}
			]
    	});</pre>
<hr>
</blockquote>
<blockquote dir="ltr" style="margin-right: 0px">
<p><strong><em>取得一个Table</em></strong></p>
<p>var userDao = conn.getTable('user','userId');</p>
<p><strong><em>查询</em></strong></p>
<p>var users = userDao.select();//这里可以写条件式</p>
<p><strong><em>添加</em></strong></p>
<hr>
<pre><span style="color: #0000ff">var</span> newuser = {
    userId : 'sshw',
    <span style="color: #0000ff">name</span> : 'sshwsfc',
    pwd : 'test',
    email : 'sshwsfc@gmail.com'
} 

userDao.insert(newuser);</pre>
<p>
<hr>

<p></p>
<p>感觉使用上还是蛮不错的，大家可以一点点试试看。</p>
<p>值得一提的是，在源码中发现Connection这里设计成了工厂的模式，Connection是一个伪接口，实现除了Air的还有GoogleGear的，会根据所处环境选择，灰常的好。</p></blockquote>
<p dir="ltr">功能还在研究中，有心得了一点点给大家分享，</p>
<p dir="ltr">PS:打算搞一个iphone的信息管理软件练练手。反正都是sqlite的</p> <img src ="http://www.blogjava.net/sshwsfc/aggbug/182206.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sshwsfc/" target="_blank">差沙</a> 2008-02-26 13:49 <a href="http://www.blogjava.net/sshwsfc/archive/2008/02/26/182206.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> Ext的组件结构分析,附Ext组件结构图</title><link>http://www.blogjava.net/sshwsfc/archive/2007/10/20/154539.html</link><dc:creator>差沙</dc:creator><author>差沙</author><pubDate>Sat, 20 Oct 2007 12:01:00 GMT</pubDate><guid>http://www.blogjava.net/sshwsfc/archive/2007/10/20/154539.html</guid><wfw:comment>http://www.blogjava.net/sshwsfc/comments/154539.html</wfw:comment><comments>http://www.blogjava.net/sshwsfc/archive/2007/10/20/154539.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.blogjava.net/sshwsfc/comments/commentRss/154539.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sshwsfc/services/trackbacks/154539.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 相信大家看了Ext2.0后, 印象最深的应该是Ext的组件模式,很好的规范了组件设计,用Manager的统一管理,也是很好的方式.下面简单分析一下Ext的组件结构.&nbsp;&nbsp;<a href='http://www.blogjava.net/sshwsfc/archive/2007/10/20/154539.html'>阅读全文</a><img src ="http://www.blogjava.net/sshwsfc/aggbug/154539.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sshwsfc/" target="_blank">差沙</a> 2007-10-20 20:01 <a href="http://www.blogjava.net/sshwsfc/archive/2007/10/20/154539.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>