[Flex]Adobe Flex/AIR学习路线(Flex部分之数据篇一)

Adobe Flex/AIR学习路线(Flex部分之控件篇)》文章我给大家介绍了对于学习Flex控件的一点经验。现在开始《Adobe Flex/AIR 学习路线》系列的第二篇文章。
本篇文章着重将要叙述的是在学习Flex的时候,如何可以学习它的数据读取、处理能力。

首先要了解的是以下一些概念: 
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内置的组件本身就具有数据显示、处理能力。