本讲的一个重点。ArrayCollection对一个字段的一个数据的取得:xmls.getItemAt(0).name.toString()。
这东西弄了我很久,大概是受Java的影响吧。
首先编写xml。在src下建立xml文件夹,然后建立一个student.xml的文件。
文件内容:
1 <?xml version="1.0" encoding="UTF-8"?>
2 <persons>
3 <person>
4 <name>金浩</name>
5 <sex>man</sex>
6 <age>23</age>
7 <clazz>数学一班</clazz>
8 </person>
9
10 <person>
11 <name>张伟</name>
12 <sex>man</sex>
13 <age>22</age>
14 <clazz>英语四班</clazz>
15 </person>
16 <person>
17 <name>蒋天傲</name>
18 <sex>man</sex>
19 <age>23</age>
20 <clazz>计算四班</clazz>
21 </person>
22
23 <person>
24 <name>熊敏之</name>
25 <sex>man</sex>
26 <age>23</age>
27 <clazz>计算机一班</clazz>
28 </person>
29 <person>
30 <name>熊超</name>
31 <sex>man</sex>
32 <age>23</age>
33 <clazz>计算二班</clazz>
34 </person>
35
36 <person>
37 <name>张洋</name>
38 <sex>woman</sex>
39 <age>22</age>
40 <clazz>英语四班</clazz>
41 </person>
42 <person>
43 <name>朱宇</name>
44 <sex>man</sex>
45 <age>23</age>
46 <clazz>英语一班</clazz>
47 </person>
48
49 <person>
50 <name>夏政</name>
51 <sex>man</sex>
52 <age>23</age>
53 <clazz>计算机四班</clazz>
54 </person>
55 </persons>
上面都我大学同学。呵呵.
然后就是建立一个mxxml application。
添加一个panel,八个label,2个button。
如:图。
代码:
1 <?xml version="1.0" encoding="utf-8"?>
2 <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="xmlData.send()">
3 <mx:HTTPService id="xmlData" url="xml/student.xml" result="resultHand(event)">
4 </mx:HTTPService>
5 <mx:Script>
6 <![CDATA[
7 import mx.controls.Alert;
8 import mx.collections.ArrayCollection;
9 import mx.rpc.events.ResultEvent;
10 [Bindable]
11 private var xmls:ArrayCollection = new ArrayCollection();
12 [Bindable]
13 public var i:int = 0;
14
15 private function resultHand(event:ResultEvent):void{
16 xmls = event.result.persons.person;
17 }
18
19 private function upClick():void{
20 if(i == 0){
21 Alert.show("已经是第一个同学了");
22 }else
23 i--;
24 }
25 private function downClick():void{
26 if(i == xmls.length-1){
27 Alert.show("已经是最后一个同学了");
28 }else
29 i++;
30 }
31 ]]>
32 </mx:Script>
33
34 <mx:Panel x="160" y="75" width="291" height="296" layout="absolute"
35 title="学生信息" id="message" fontSize="14" fontWeight="bold" fontStyle="normal">
36 <mx:Label x="49.5" y="39" text="姓名:"/>
37 <mx:Label x="49.5" y="70" text="年龄:"/>
38 <mx:Label x="49.5" y="101" text="性别:"/>
39 <mx:Label x="49.5" y="132" text="班级:" width="50"/>
40 <mx:Button x="49.5" y="183" label="上一个" id="up" click="upClick()"/>
41 <mx:Button x="150.5" y="183" label="下一个" id="down" click="downClick()"/>
42 <mx:Label x="116.5" y="39" width="105" id="nam" text="{xmls.getItemAt(i).name.toString()}"/>
43 <mx:Label x="116.5" y="70" width="105" id="age" text="{xmls.getItemAt(i).age.toString()}"/>
44 <mx:Label x="116.5" y="101" width="105" id="sex" text="{xmls.getItemAt(i).sex.toString()}"/>
45 <mx:Label x="116.5" y="132" width="105" id="clazz" text="{xmls.getItemAt(i).clazz.toString()}"/>
46 </mx:Panel>
47
48 </mx:Application>
49
没做注释是因为觉得太简单了。呵呵。
查询:
当到最后一个的时候,弹出。对话框。
ok啦。在这个例子中我没有在用MX:MODEL 调用xml文件了,而采用的是。MX:HTTPSERVICE.
书上说的区别是,第一种方法把xml数据“固化”到swf中了,
这一点没有去深究。
而第二中则采用的是,只有再调用的时候才去。
现在做个测试。
如果我在运行的情况下,在xml上增加,删除一个同学,看会怎样。
刚做完测试,增加和删除一个都对其没有影响。
不懂书上是什么个意思。还有使用ArrayCollection和Array的区别,网络上说ArrayCollection可以动态的调整。
如果我在程序中加入一个remove同学的话,ArrayCollection保证是执行后的结果。
这个就不做测试了。
反正我是觉得现在这个demo很有用。