足迹
面对它、接受它、处理它、放下它
posts - 3,comments - 0,trackbacks - 0
最近有不少初学者问我,Flex/AIR可以干什么?如何才可以学好Flex/AIR?因此时至今日我打算写一篇这样的文章,以便初学者更好的找到适合自己的Adobe Flex学习路线。
由于文章本事比较冗长,因此将其分成Flex篇与AIR篇,请大家注意,本篇文章是Adobe Flex学习路线(Flex部分之控件篇)

okay,在说Adobe Flex/AIR学习路线之前,应该有必要了解一下以下内容:

1、什么是Flex/RIA/AIR
RIA:大家可以看我的《Flex第一步》上面的说明,也可可以看这里
Flex:同样,大家可以看我的《Flex第一步》上面的说明,也可可以看这里
AIR:由于写《Flex第一步》的时候并未推出AIR的,因此在这本书里没有涉及到AIR,那么什么是AIR呢?
          可以看我2008年初,应RIAMeeting邀请而做的一次关于Adobe AIR的演讲,请看这里:http://www.k-zone.cn/zblog/post/log-2008-1-29-diarys.html

2、Flex到底可以做些什么?
     我例举几个商业化的Flex例子,给大家看一下,Flex到底可以做些什么。
     请看这里:http://flex.org/showcase/
     或者这里:http://www.scalenine.com/showcase/
     同时,这里有大量的由为Flex制作的皮肤:http://www.scalenine.com/gallery/

3、ActionScript 3.0的概念
      具体大家可以看这里

4、MXML的概念
      具体请看这里

由于本篇文章写的比较晚,因此我就不在一一叙述上面的这些概念了,网上有很多详细的解释:)
同时上述内容也全部在walktree和我写的的书里《Flex第一步

okay,介绍完刚才的几个准备工作,那么让我们来详细了解一下Flex的学习路线。

1、在学习Flex之前,一定要先了解如何搭建Flex开发平台。而这些内容需要大家了解什么是Flex Builder、Flex SDK。
      而这部分内容,我想在另外一篇文章里面写,不过这些内容大家也都可以到网上或者书上找到答案,我就不在这里复述了。
      一般说来:通过这里直接下载Flex Buiilder 3.0就可以在你的机器上面编写Flex Application了。

2、在学习Flex之前,首先学习的却是ActionScript 3.0(我就不讲Flex与ActionScript 3.0的关系了)
     如果是一个初学者,那么就一定要掌握ActionScript 3.0一些基本内容:例如,变量/常量、基本数据类型、流程控制、函数、面向对象的特征等这几方面浅显的内容。
     当你掌握了ActionScript 3.0后,如果再学习Flex的话,就会有事半功倍的效果。
     推荐关于ActionScript 3.0的图书:国内黑羽兄写的《ActionScript 3.0 殿堂之路》、国外的《ActionScript 3.0编程精粹》

3、学习Flex,就应该从最基本的Flex components开始,Flex components一般分成如下一些类别(基本部分):
     a、常规类控件:Alert
     b、按钮类控件:Button、RadioButton、RadionButtonGroup
     c、文本类控件:Label、TextArea、TextInput、RichTextEditor
     d、日期类控件:DateChooser、DateField
     e、载入类控件:Image、SWFLoader、VideoDisplay
     f、菜单类控件:Menu、MenuButton、PopUpMenuButton
    以上都是Flex的一些最基本控件,有很多看起来很炫的控件都是继承与这些基本控件的。

4、当掌握了以上Flex初级控件后,大家可以学习一些比较高级的控件,例如:
    a、格式化类控件:CurrencyFormatter、DateFormatter等等。
    b、验证类控件:CreditCardValidator、DateValidator、EmailValidator等。

5、当掌握以上控件后,我们还要把它们有序的组合在一起,因此就必须要掌握容器、布局的概念。
    a、容器类控件:Panel、TitleWindow、Canvas、ApplicationControlBar、ControlBar、VBox、HBox、ViewStack等。
    b、布局类控件:水平布局、垂直布局、自定义布局等。

okay,当你完成了上述内容后,基本上你就可以做出非常正规的Flex Application,对,你没有看错,就上面那些基本的内容。

接下来就是一些有选择性掌握的、炫目的控件:

6、Flex Effects
     这些组件是控制你的Flex在操作上面的一些效果。例如Move(移动效果)、Fade(淡出淡入效果)、Resize(改变大小效果)、Zoom(放大缩小效果)等。
     我个人建议,这部分内容还应该是必须要掌握的。

7、Flex Chats
      这些chats,基本上涵盖了常用的一些图标组件

8、Flex 表格组件、打印组件
     表格组件:例如:DataGrid、Adanced DataGrid等。
     打印组件:FlexPrintJob。

同时上面的控件部分我只列举了一些常用的控件,关于这些控件大家可以看这里:
http://examples.adobe.com/flex3/componentexplorer/explorer.html

书籍方面,我推荐《Flex3权威指南》、《Flex 3 Cookbook中文版》这两本,当然如果大家原因的话也可以买《Flex第一步》:)

okay,以上就是Flex的控件部分了,当掌握了这些内容后,虽然你可以做出很炫效果的Flex Application,但是还缺少一些东西,那就是数据读取的功能。
那么下一篇文章的内容:Adobe Flex学习路线(Flex部分之控件篇一)
posted @ 2010-02-01 20:38 john locke 阅读(151) | 评论 (0)编辑 收藏
首先要了解的是以下一些概念: 
1、XML
     我就不在这里复述了,详细请看:http://baike.baidu.com/view/63.htm(其实百度的一些功能还是比较不错的,例如百科、贴吧)

2、E4X
     详细概念请看:http://baike.baidu.com/view/1057001.htm
     简介点说,E4X会使我们更加容易的处理xml数据。

3、JSON
     还是需要看定义的话,请前往这里:http://baike.baidu.com/view/136475.htm

4、数组
    我想只要是学过编程的朋友都应该知道数组的概念吧,如果不知道的话,请看这里:http://baike.baidu.com/view/209670.htm

5、哈希表
    详细请看:http://baike.baidu.com/view/329976.htm
    关于哈希表与数组直接区别,就不是本篇文章所描述的内容了,如果大有多这方面不清楚的可以查阅相关资料。

okay,了解了一些以上的内容后,让我们看一下Flex本身如何对外部数据进行处理的。也就是说,尽量掌握以下的一些知识点。

1、URLLoader、URLRequest的用法。
    掌握了URLLoader、URLRequest的用法有,就可以从外部读入任意内容的数据了,并且可以加以处理。例如以下的代码:
    
    var loader: URLLoader = new URLLoader( new URLRequest( "resources/config.xml" ));
    loader.addEventListener( Event.COMPLETE, handleCompleted );

   上述代码告诉我们,Flex读取外部xml的方式。将xml读取后,就可以对其进行处理了,关于处理的具体方式可以看下面。

2、Flex处理XML的机制。
    由于Flex本身内置了E4X机制,这样它可以比其他的编程语言更加适合处理XML这样的数据。
    因此就需要学习Flex是如何读取、控制XML的方式。

3、Flex内置一些与XML有关系的class
    Flex SDK内置了一些处理XML的Class,而这些Class基本上都放置在flash.xml这个包下面。例如XMLDocument、XMLNode、XMLNodeType
    flash.xml的详细内容请看:http://livedocs.adobe.com/flex/3_cn/langref/flash/xml/package-detail.html
    同时还包含了两个在顶级包中的class:
    XMLhttp://livedocs.adobe.com/flex/3_cn/langref/package.html#XML()
    XMLListhttp://livedocs.adobe.com/flex/3_cn/langref/package.html#XMLList()
    还有一个是关于处理XMLList集合的class:
    XMLListCollection,位置在mx.collections下面,具体请看:
    http://livedocs.adobe.com/flex/3_cn/langref/mx/collections/XMLListCollection.html
    当掌握了这些内容后,大家可以可以很方便的对读入到Flex里面的XML进行处理了。

4、ArrayArrayCollection
    由于Flex本身一门编程语言,因此理所当然的具有处理数组的能力,因此大家必须要掌握ActionScript 3.0Array的一些概念。
    例如:
    数组的长度(length)、数组查找(indexOf、lastIndexOf)、首尾增加新的元素(push、unshift)、首尾删除元素(pop、shift)、在数组中出插入/删除元素(splice)
    截取数据(slice)、连接多个数组(concat)、数组排序功能(reverse、sort、sortOn)、操作数组元素(forEach、every、filter、map、some)等这些概念。
    我本人认为虽然ActionScript 3.0的数组的确具有一些其他语言所不具有的方式,但是ActionScript 3.0的数组与其他动态语言(Python、Ruby)比起来还是差的多的。

    ArrayCollection这也是ActionScript 3.0给我们带来的一个更加高级的方式,ArrayCollection的含义也就是数组的集合。
    它在很多程度上可以代替ActionScript 3.0中令人不爽的数组概念。
    详细的用法请看这里:http://livedocs.adobe.com/flex/3_cn/langref/mx/collections/ArrayCollection.html

5、哈希表
    虽然ActionScript 3.0本身并没有给我们带来哈希表的功能,但是我们可以使用ActionScript 3.0另外一个强大的功能:Object class,我们可以通过控制Object来实现哈希表的功能。

    例如以下的代码:
    var obj : Object = new Object();
    obj.x = 1;
    obj.y = 2;
    obj.z = 3;
    如果想要取出obj.x的值,那么我们就可以使用obj[ x ]或者obj.x这样的方式就可以把对应的值取出来。

6、对JSON的处理
    由于现在很多Open API方面的source都支持对JSON的输出,因此有的时候,还是需要了解一下在Flex里面如何处理JSON的。
    而JSON相对于XML的好处是:1、size相对小一些。2、更容易被JavaScript处理。
    但是ActionScript 3.0里面没有给我们直接处理JSON的能力,因此我们需要借用外部的力量来实现。
    在《我经常使用的 Flex Tools 和 Resource》一文中,我想大家推荐了一个library:as3corelib。其中就有关于ActionScript 3.0处理JSON的class:JSONDecoder。
    关于这个class的具体用法,请大家自己查找。

okay,基本上《Adobe Flex/AIR学习路线(Flex部分之数据篇一)》已经完成了,但是这仅仅是Flex中最基本的一些数据处理方式,下一篇《Adobe Flex/AIR学习路线(Flex部分之数据篇二)》我向大家介绍一下Flex组件的数据处理方式:dataProvideritemRendererdata这三个属性,通过这两个属性,我们可以让一些Flex内置的组件本身就具有数据显示、处理能力。 
posted @ 2010-02-01 20:37 john locke 阅读(133) | 评论 (0)编辑 收藏

上一篇文章《Adobe Flex/AIR学习路线(Flex部分之数据篇一)》分析了Flex里面经常使用的一些数据类型、处理数据的一些常用的class等内容,今天我们简述一下,Flex里面的哪些组件也具有数据处理能力。

1、dataProvider
     在Adobe ActionScript 3.0里面的定义如下:
    要查看的数据集。此属性允许您将大多数类型的对象用作数据提供程序。如果将 dataProvider属性设置为 Array,则会将其转换为 ArrayCollection。如果将该属性设置为 XML对象,则会将其转换为仅包含一个项目的 XMLListCollection。如果将该属性设置为XMLList,则会将其转换为 XMLListCollection。如果将该属性设置为实现 IList 或 ICollectionView接口的对象,则可直接应用此对象。受转换操作的影响,在您获取 dataProvider属性时,该属性值将始终为 ICollectionView,所以此值不一定是您设置的对象类型。如果要修改数据提供程序中的数据,则了解以下行为非常重要:可能不会检测对原始数据所做的更改,但将检测对从 dataProvider属性获取的 ICollectionView 对象所做的更改。默认值为 null.此属性可用作数据绑定的源。
    上面那一大堆的东西其实就说明以下几点:
    a、凡是具有dataProvider的组件,都可以将Array、XML等内容作为数据源。
    b、将这些作为数据源的内容“自动”绑定并显示在这些控件上面。
    所以通常的做法,当Flex获取了外部数据后,可以将其直接赋值为dataProvider,然后通过一些设定,就可以在这些组件上面显示数据了。
    关于这个例子我就不在这里复述了,大家可以自行去找一下,或者直接看这里的内容:http://livedocs.adobe.com/flex/3_cn/mx/controls/ComboBox.html#includeExamplesSummary

2、itemRenderer项目渲染器)及其data属性。
     itemRenderer的作用就是可以自定义一些组件的项目显示效果,例如我们熟知的Combobox、List、DataGrid等都具有这样的属性,也就是说,我们可以利用itemRenderer来改善ComBoBox里面的下拉的显示效果。当然,List、DataGrid也是这样的。
     当ComboBox中自定义了一个渲染器后,同时使用dataProvider的方式绑定了一个数据源,这个时候,如何与我们自定义的渲染器里面的item发生作用呢?就是使用data方式。
     也就是说,dataProvider可以绑定数据到UI、如果这个组件使用了自定义渲染器,那么就可以使用data.XXX的方式获取到dataProvider里面的数据。

okay,以上介绍的两个知识点是关于Flex组件的数据处理能力,其中dataProvider可以把Array、XML等内容作为数据源直接绑定并显示到UI上面,而itemRenderer里面的data是实现组件与其渲染器之间的数据处理。

下一篇的内容是关于Flex与后台进行通讯的常见的几种方式:HTTPService、WebService、Remote等方式,而通过这几种方式可以轻松的让一些例如Java、C#、Python、Ruby、PHP等主流编程语言为Flex所服务:)

附加:
关于dataProvideritemRendererdata的具体用法有些抽象,因此我特此列举一个例子来说明一下。
这是一个HorizontalList组件,而且其中它的itemRenderer=ToolBoxRenderer,想让我们看一下HorizontalList的片段代码:
<mx:HorizontalList id="myHorizontalList" itemRenderer="ToolBoxRenderer">
         <mx:dataProvider>
             <mx:Array>
                   <mx:Object tooltip= "rubber" styleName="rubber" language="{ _language }"/>
             </mx:Array>
         </mx:dataProvider>
</mx:HorizontalList> 

然后是ToolBoxRenderer的片段代码:

<mx:Canvas width="30" height="30">
         <mx:Button
            width="30" height="30" 
            toolTip="{ data.tooltip }" 
            styleName="{ data.styleName }"/>
</mx:Canvas>

再让我们看看itemRenderer是如何与我们今天这个主题联系起来的。
1、在myHorizontalList中定义了一个dataProvider,通过代码可以看出是一个Array类型的变量,然后将其赋值给dataProvider。这个时候,其实就应该将数据显示到myHorizontalList上面了,这也就是dataProvider的用处。
2、在dataProvider包含的Array中,定义如下的结构:<mx:Object tooltip= "rubber" styleName="rubber" language="{ _language }"/>
3、我们不仅设定了dataProvider,还是同时设定了itemRenderer,即为ToolBoxRenderer。
4、在ToolBoxRenderer里面,定义了一个Button,同时我们使用类似于这样的方式可以取得dataProvider里面的数据:toolTip="{ data.tooltip }" 

以上就是一个非常简单,但是又非常典型的一个dataProvideritemRendererdata的用法,希望大家可以理解:)

posted @ 2010-02-01 20:37 john locke 阅读(131) | 评论 (0)编辑 收藏

Flex的项目也很长时间了,就来说一下我经常使用的一些Flex Tools 和 Resource。

Flex Framework:
1、Cairngorm
     首先CairngormAdobe推崇的一种Flex Framework,同时也是开源的Framework,暂且不提它的单例模式、结构等备受争议的地方,就单单是前面所说,我想没用不使用它的理由。
    下载地址:http://opensource.adobe.com/wiki/display/cairngorm/Cairngorm
2、Mate
    我个人是非常喜欢的一个轻量级的Flex Framework,不过缺点就是只能在Flex里面使用。
    关于Mate的详细内容可以去这里:http://www.k-zone.cn/zblog/post/flex-mate-framework.html

Unit:
1、FlexUnit
     FlexUnit是一个关于Flex与ActionScript 3.0的单元测试框架。在功能上有些与JUnit有些类似,我比较推荐的一种测试框架。
    地址:http://opensource.adobe.com/wiki/display/flexunit/FlexUnit

IDE:
1、MyEclipse
     在这里使用MyEclipse而不是Eclipse的原因,非常简单,因此MyEclipse很多东西都已经集成好了,到时候你安装一下Flex Builder for Eclipse plug-in就可以了。
     地址:http://www.myeclipseide.com
2、AptanaAIR
     如果想使用AIR IDE的话,我经常使用的是Aptana、因此它除了可以编译AIR外,还支持很多的JS library,例如Ext JS、JQuery等。正难能可贵的是,它还是可以编译IPhone...
     地址:http://aptana.com
3、FlashDevelopActionScript 3.0
    有的时候,需要一些ActionScript Project,那么如果再使用Myeclipse的话,似乎有些大材小用,因此我会使用FlashDevelop。
    地址:http://www.flashdevelop.org

Library:
1、Degrafa
    由于我需要使用绘图的一些东西,因此Degrafa是我不二的选择。
    地址:http://www.degrafa.org/
2、as3corelib
    这里面提供了很多很有用的功能,例如:包括几个基础的MD5、JSON、高级String以及数据解析等等,强烈推荐。
    地址:http://code.google.com/p/as3corelib/
3、FlexLib
    这里面有很多开源的第三方组件,有的时候的确是需要参考一下,强烈推荐。
    地址:http://code.google.com/p/flexlib/

Explorers:
1、ComponentExplorer
    这是关于Flex 3.0的一些常用组件,偶尔我也会看一下的。
    地址:http://examples.adobe.com/flex3/componentexplorer/explorer.html
2、Flex 3 Style Explorer
    地址:http://examples.adobe.com/flex3/consulting/styleexplorer/Flex3StyleExplorer.html

Doc:
1、Flex编码规约
    地址:http://opensource.adobe.com/wiki/display/flexsdk/Coding+Conventions
2、Flex SDK 3.0 Language Reference
    地址:http://livedocs.adobe.com/flex/3/langref/
3、Flex 4.0(Gumbo)Language Reference
    地址: http://livedocs.adobe.com/flex/gumbo/langref/
4、ActionScript language references
    地址:http://www.adobe.com/devnet/actionscript/references/
5、ASDoc
    ActionScript的API文档生成工具ASDoc
    地址:http://livedocs.adobe.com/flex/3/html/help.html?content=asdoc_1.html

posted @ 2010-02-01 20:33 john locke 阅读(210) | 评论 (0)编辑 收藏
替换com.spket.ui_1.6.17.jar中的com.spket.ui.internal.Lincese.

1.6.17 Lincese

posted @ 2009-08-05 11:39 john locke 阅读(220) | 评论 (0)编辑 收藏
仅列出标题