Flex中的数据类型

[size=small]学习笔记,欢迎拍砖。[/size]

[color=red]XML和XMLList有何区别?[/color]
XML不允许相同的层次出现同样的tag。而XMLList可以。如:

var xml:XML = new XML("<Student></Student><Student></Student>");

上边的写法对XML来说是不允许的,而XMLList却支持。

var list:XMLList = new XMLList("<Student></Student><Student></Student>");


[color=red]如何判断XML对象是否拥有某个属性?[/color]
if ("@attr" in node) { ... }
参考链接:[url]http://martijnvanbeek.net/weblog/40/testing_the_existance_of_an_attribute_in_xml_with_as3.html[/url]

[color=red]如何读取XML文件?[/color]
MXML:
<fx:XML id="textContent" source="assets/markup.xml"/>


AS:
var loader:URLLoader = new URLLoader();  
loader.addEventListener(Event.COMPLETE, handleConfigFileLoadComplete);
loader.load(new URLRequest("assets/Config.xml"));

private function handleConfigFileLoadComplete(event:Event):void
{
m_bannerRotators = XML(event.target.data);
var filterList:XMLListCollection
= new XMLListCollection(m_bannerRotators.BannerRotator.(@name == this.name).elements().@name);
}


[color=red]AS中的E4X支持“与”和“或”这些逻辑操作符吗?[/color]
支持
示例代码如下:
var filterResult:XMLListCollection 
= new XMLListCollection(config.BannerRotator.(@name == "gamePS3" || @name == "gameWII").Filter.(@name == "all").elements());


[color=red]Flex的Collections的介绍[/color]
[url]http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf69084-7b6b.html[/url]

[color=red]ArrayList和ArrayCollection有何区别?[/color]
ArrayList不能筛选和过滤数组,而ArrayCollection可以。


[color=red]如何为XMLListCollection排序?[/color]
示例代码如下:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">

<mx:Script>
<![CDATA[
import mx.collections.SortField;
import mx.collections.Sort;

private function sortByField(value:String,
isNumeric:Boolean = false,
isDescending:Boolean = false):Boolean {
var sortField:SortField = new SortField(value);
sortField.numeric = isNumeric;
sortField.descending = isDescending;
var sort:Sort = new Sort();
sort.fields = [sortField];
xmlListColl.sort = sort;
return xmlListColl.refresh();
}
]]>
</mx:Script>

<mx:XMLListCollection id="xmlListColl">
<mx:source>
<mx:XMLList>
<group name="Esthetique" value="2997" cost="0.52" />
<group name="xx" value="652" cost="0.47" />
<group name="xyt" value="652" cost="0.54" />
<group name="sss" value="652" cost="0.23" />
<group name="ffsdfsd" value="652" cost="0.82" />
</mx:XMLList>
</mx:source>
<mx:sort>
<mx:Sort>
<mx:SortField name="@cost"
numeric="true"
descending="true" />
</mx:Sort>
</mx:sort>
</mx:XMLListCollection>

<mx:Panel>
<mx:DataGrid dataProvider="{xmlListColl}" width="100%">
<mx:columns>
<mx:DataGridColumn dataField="@name" />
<mx:DataGridColumn dataField="@cost" />
<mx:DataGridColumn dataField="@value" />
</mx:columns>
</mx:DataGrid>
<mx:ControlBar>
<mx:Button label="Sort by @name"
click="sortByField('@name')" />
<mx:Button label="Sort by @cost"
click="sortByField('@cost', true, true);" />
<mx:Button label="Sort by @value"
click="sortByField('@value', true, true);" />
</mx:ControlBar>
</mx:Panel>

</mx:Application>


参考链接:[url]http://blog.flexexamples.com/2007/08/05/sorting-an-arraycollection-using-the-sortfield-and-sort-classes/[/url]


[color=red]Array和Vector.<>有何区别?[/color]
1.Vector的性能更高。
2.Vector是type safety的。
3.Vector需要FP10,而有20%的用户仍在使用FP9。
参考链接:[url]http://stackoverflow.com/questions/1130309/vector-vs-array[/url]

除数据类型限制之外,Vector 类还具有其他一些限制,从而有别于 Array 类:

* Vector 是一种密集数组。与 Array 不同,Vector 必须在每个索引中包含一个值(或 null),而前者可以只在索引 0 和 7 中包含值(即使位置 1 到 6 中不存在任何值)。
* Vector 可以具有固定长度,这意味着其所包含的元素数量不可更改。
* 对 Vector 的元素的访问需要接受范围检查。绝对不能从大于最后一个元素 (length - 1) 的索引中读取值。绝对不能对超过当前最后一个索引一个以上的索引设置值(也就是说,只能在现有索引或索引 [length] 中设置值)。

由于 Vector 具有这些限制,因此 Vector 相对于所有元素均为单个类的实例的 Array 实例有三个主要优点:

* 性能:使用 Vector 实例时的数组元素进行访问和迭代的速度比使用 Array 时的速度要快很多。
* 类型安全性:在严格模式下,编译器可以识别数据类型错误。数据类型错误的例子包括将数据类型错误的值分配给 Vector 或从 Vector 中读取值时要求错误的数据类型。但请注意,当使用 push() 方法或 unshift() 方法向 Vector 添加值时,在编译时不会检查参数的数据类型,而是在运行时检查。
* 可靠性:相对于 Array,运行时范围检查(或定长检查)极大地提高了可靠性。

[color=red]AS里定义XML类型的变量,不需要双引号:[/color]

public var dataXML1:XML =
<records>
<record month="Jan" balanceAndheri="10000000.00" />
<record month="Feb" balanceAndheri="56200000.00"/>
<record month="Mar" balanceAndheri="62000000.00" "/>
</records>


[color=red]如何创建ArrayList的变量实例,并为其赋值?[/color]
For MXML:

<s:ArrayList id="mapAC">
<fx:Object label="Jungle" imagePath="assets/Jungle.jpg"/>
<fx:Object label="Swamp" imagePath="assets/Swamp.jpg"/>
</s:ArrayList>


For AS:

var mapAC:ArrayList = new ArrayList([
{label: "Jungle", imagePath="assets/Jungle.jpg"},
{label: "Swamp", imagePath="assets/Swamp.jpg"}
]);


[color=red]如何从Array里删除一个元素?[/color]
使用Array的splice函数,该函数也可以用于插入。
实例代码如下:
var flexArray:Array=[“Adobe”,”Flex”];
flexArray.splice(1,0,”Maromedia”); //删除从索引位置1开始的0个元素,添加”Maromedia”到实例中
trace(flexArray); //输出“Adobe,Macromeida,Flex”
flexArray.splice(1,1); //删除从索引位置1开始的1个元素
trace(flexArray); //输出“Adobe,Flex”


[color=red]如可清空Dictionary?[/color]
private function getFilter(propertyFilter:Dictionary):void
{
for (var obj:Object in propertyFilter)
{
delete propertyFilter[obj];
}
//....
}


[color=red]如何清空Vector?[/color]
调用它的splice函数。需要特别小心的是:别和slice函数混淆了!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值