actionscriptjava 数组赋值值后数据类型会变化吗

【图文】第2讲
ActionScript变量和数据类型_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
ActionScript变量和数据类型
大小:74.00KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢ActionScript函数如何返回数组数据类型,新构思艺术设计网博客分类:
AS3 快速入门篇------使用ActionScript 创建对象实例小结

  使用ActionScript 创建对象实例小结
  基本实例创建
  然而,您不会总是希望直观地创建对象。还可以通过几种方法来仅使用ActionScript 创建对象
  实例。首先,借助几个ActionScript 数据类型,可以使用文本表达式(直接写入ActionScript 代
  码的值)创建一个实例。下面给出了一些示例:
  􀁺 文本数字值(直接输入数字):
  var someNumber:Number = 17.239;
  var someNegativeInteger:int = -53;
  var someUint:uint = 22;
  􀁺 文本字符串值(用双引号将本文引起来):
  var firstName:String = "George";
  var soliloquy:String = "To be or not to be, that is the question...";
  􀁺 文本布尔值(使用字面值true 或false):
  var niceWeather:Boolean =
  var playingOutside:Boolean =
  􀁺 文本数组值(在方括号中包含以逗号分隔的值列表):
  var seasons:Array = ["spring", "summer", "autumn", "winter"];
  􀁺 文本XML 值(直接输入XML):
  var employee:XML =
  Harold
  Webster
  ;
  􀁺 数组
  var myArr1:Array=new Array();//索引数组,空数组没有元素
  var myArr2:Array=new Array(5);//索引数组包含5 个元素,但尚未赋值
  var myArr3:Array=["one","two","three","four","five"];//索引数组,包含5 个有实际内容
  trace(myArr3);//one,two,three,four,five
  //字符串键关联数组
  var monitorInfo:Array = new Array(); //要先创建构造函数
  monitorInfo["type"] = "Flat Panel";
  monitorInfo["resolution"] = "1600 x 1200";
  trace(monitorInfo["type"], monitorInfo["resolution"]); // output: Flat Panel 1600 x 1200
  􀁺 Dictionary
  创建具有对象键的关联数组(词典)
  import flash.display.S
  import flash.utils.D
  var groupMap:Dictionary = new Dictionary();
  // objects to use as keys
  var spr1:Sprite = new Sprite();
  var spr2:Sprite = new Sprite();
  var spr3:Sprite = new Sprite();
  // objects to use as values
  var groupA:Object = new Object();
  var groupB:Object = new Object();
  // Create new key-value pairs in dictionary.
  groupMap[spr1] = groupA; //具有对象键的关联数组
  groupMap[spr2] = groupB;
  groupMap[spr3] = groupB;
  if (groupMap[spr1] == groupA)
  trace("spr1 is in groupA");
  if (groupMap[spr2] == groupB)
  trace("spr2 is in groupB");
  if (groupMap[spr3] == groupB)
  trace("spr3 is in groupB");
  }
  􀁺 正则表达式
  var pattern1:RegExp = /bob/i;
  var pattern2:RegExp = new RegExp("bob", "i");
  􀁺 Object 数据类型
  Var myObj1:Object=new Object();
  Var myObj2:Object={myHeight:172,myAge:22,myName:"小乐"};
  myObj1.msg="个人信息";
  trace(myObj2.myAge);
  􀁺 对于其它任何数据类型而言,要创建一个对象实例,应将new 运算符与类名一起使用,如
  下所示:
  var raceCar:MovieClip = new MovieClip();
  var birthday:Date = new Date();
  􀁺 Flash 中,new 运算符还可用于创建已在库中定义、但没有放在舞台上的影片剪辑元件的
  实例
  反射类名动态创建实例
  flash.utils 包中的公共方法
  getDefinitionByName(name:String):Object
  返回name 参数指定的类的类名引用。
  如下片段代码所示
  function playSnd(n:uint)
  var sndName:Class=getDefinitionByName("wav"+sndArr[n]) as C
  var snd:Sound=new sndName();
  var sndChannel:SoundChannel=snd.play();
浏览: 6883 次
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'博客分类:
Flex Array,Arraylist,ArrayCollection使用详解
1.1.1 Array的申明
//申明arraylist的四种方式
var arr1:Array=new Array("小强","小红","小刚");
var arr2:Array=['小强','小红','小刚'];
var aar3:Array=new Array(
{name:"小强",type:"boy"},
{name:"小红",type:"gril"},
{name:"小刚",type:"boy"});
&fx:Array id="arr4"&
&fx:String小强&/fx:String&
&fx:String&小红&/fx:String&
&fx:String&小刚&/fx:String&
&/fx:Array&
1.1.2 ArrayList的申明
&?xml version="1.0" encoding="utf-8"?&
&s:Application xmlns:fx="/mxml/2009"
xmlns:s="library:///flex/spark"
xmlns:mx="library:///flex/mx"
minWidth="955" minHeight="600" creationComplete="appInit(event)"&
&s:layout&
&s:VerticalLayout/&
&/s:layout&
&fx:Script&
import mx.collections.ArrayL
import mx.events.FlexE
import mx.rpc.events.ResultE
[Bindable]
private var arr1:ArrayL
[Bindable]
private var arr2:ArrayL
[Bindable]
private var arr3:ArrayL
protected function appInit(event:FlexEvent):void
var arr:Array=new Array(
{name:"小强",type:"boy"},
{name:"小红",type:"gril"},
{name:"小刚",type:"boy"});
arr1=new ArrayList();
arr1.addItem({name:"小强",type:"boy"});
arr1.addItem({name:"小红",type:"gril"});
arr1.addItem({name:"小刚",type:"boy"});
arr2=new ArrayList(arr);
this.ser.send();
protected function OnResultEvent(event:ResultEvent):void
this.arr3 = event.result.data.
&/fx:Script&
&fx:Declarations&
&!-- 将非可视元素(例如服务、值对象)放在此处 --&
&s:HTTPService id="ser" result="OnResultEvent(event)" resultFormat="object" url="data/data.xml" /&
&/fx:Declarations&
&s:ComboBox dataProvider="{arr1}" labelField="name"/&
&s:ComboBox dataProvider="{arr2}" labelField="name"/&
&s:DataGrid id="ag" y="200" width="302" dataProvider="{arr3}"&
&s:columns&
&s:ArrayList&
&s:GridColumn dataField="totle" headerText="Totle"/&
&s:GridColumn dataField="city" headerText="City"/&
&s:GridColumn dataField="state" headerText="State"/&
&/s:ArrayList&
&/s:columns&
&/s:DataGrid&
&/s:Application&
1.1.3 ArrayCollection的申明
&?xml version="1.0" encoding="utf-8"?&
&s:Application xmlns:fx="/mxml/2009"
xmlns:s="library:///flex/spark"
xmlns:mx="library:///flex/mx"
minWidth="955" minHeight="600" creationComplete="appInit(event)"&
&s:layout&
&s:VerticalLayout/&
&/s:layout&
&fx:Script&
import mx.collections.ArrayC
import mx.events.FlexE
[Bindable]
private var AC1:mx.collections.ArrayC
[Bindable]
private var AC2:mx.collections.ArrayC
[Bindable]
private var AC3:mx.collections.ArrayC
private var arr1:A
protected function appInit(event:FlexEvent):void
arr1=new Array(
{name:"小强",type:"boy"},
{name:"小红",type:"gril"},
{name:"小刚",type:"boy"});
AC1=new mx.collections.ArrayCollection(arr1);
AC2=new mx.collections.ArrayCollection();
AC2.addItem({name:"小强",type:"boy"});
AC2.addItem({name:"小红",type:"gril"});
AC2.addItem({name:"小刚",type:"boy"});
AC3=new mx.collections.ArrayCollection([
{id:"01",name:"汽车名称",type:"汽车类型",children:[{id:"01-01",name:"大众",type:"汽车"},{id:"01-02",name:"本田",type:"汽车"}]},
{id:"02",name:"书籍名称",type:"书籍类型",children:[{id:"02-01",name:"神话",type:"小说"},{id:"02-02",name:"美女",type:"小说"}]}
&/fx:Script&
&fx:Declarations&
&!-- 将非可视元素(例如服务、值对象)放在此处 --&
&/fx:Declarations&
&s:ComboBox dataProvider="{AC1}" labelField="name"/&
&s:ComboBox dataProvider="{AC2}" labelField="name"/&
&s:ComboBox dataProvider="{AC3}" labelField="name"/&
&/s:Application&
1.1.4 XML转换为ArrayCollection
1.1.4.1 第一种直接转换
&?xml version="1.0" encoding="utf-8"?&
&s:Application xmlns:fx="/mxml/2009"
xmlns:s="library:///flex/spark"
xmlns:mx="library:///flex/mx"
minWidth="955" minHeight="600" creationComplete="appInit(event)"&
&fx:Script&
import mx.collections.ArrayC
import mx.events.FlexE
import mx.rpc.events.ResultE
[Bindable]
private var home:mx.collections.ArrayC
protected function appInit(event:FlexEvent):void
this.srv.send();
protected function OnResultEvent(event:ResultEvent):void
this.home = event.result.data.
&/fx:Script&
&fx:Declarations&
&!-- 将非可视元素(例如服务、值对象)放在此处 --&
&s:HTTPService id="srv" result="OnResultEvent(event)" resultFormat="object"
url="data/data.xml"/&
&/fx:Declarations&
&s:DataGrid id="ag" y="200" width="302" dataProvider="{home}"&
&s:columns&
&s:ArrayList&
&s:GridColumn dataField="totle" headerText="Totle"/&
&s:GridColumn dataField="city" headerText="City"/&
&s:GridColumn dataField="state" headerText="State"/&
&/s:ArrayList&
&/s:columns&
&/s:DataGrid&
&/s:Application&
1. 要将XML数据转为ArrayCollection,那么这个XML的数据内容不能写在节点的属性中,而是要作为节点的内容。例如,不能使用下面的写法:&node type=”汽车"name=”宝马"/&
2. XML数据中如果只有一条数据时转成的ArrayCollection会是个空值,节要单独处理。
3. 如果对加载的XML指定应用E4X格式,Flex将不会使用ArrayCollection类进行转换,例如,下面的写法无法转为ArrayCollection:
&mx:HTTPService id="ser" url="data/data.xml"
Result="resuleHandler(event)"resultFormat="e4x"/&
4. ArrayCollection作数据源时DataGrid可以不必写DalaCridColumn标签,ArrayCollection每一条数据的所有字段会自动作为DataCrid的各列。这样适合表格列数不确定的情况。
HTTPService获取数据转换为ArrayCollection。但这种方法有局限,首先是条目为1条时会出现问题,如上例中,node节点个数为1时,无法正常显示内容;当node节点个数大于1而某个node的子节点Children的个数为1时,子节点没有显示出来。只有当node节点个数大于1,而node的子节点children的个数大于1时,这种方式没有问题。
1.1.4.2 第二种将xml解析为对象
&?xml version="1.0" encoding="utf-8"?&
&s:Application xmlns:fx="/mxml/2009"
xmlns:s="library:///flex/spark" creationComplete="arrInit(event)"
xmlns:mx="library:///flex/mx" minWidth="955" minHeight="600"&
&fx:Script&
import mx.collections.ArrayC
import mx.containers.F
import mx.events.FlexE
import mx.rpc.events.ResultE
[Bindable]
private var home:mx.collections.ArrayC
protected function arrInit(event:FlexEvent):void
this.ser.send();
protected function ResultHandler(event:ResultEvent):void
//this.home=event.result.data.
var myxml:XML=event.result as XML;
var arr:Array=new Array();
for (var i:int = 0; i & myxml.region.length(); i++)
var obj:Object=new Object();
obj.totle=myxml.region[i].
obj.city=myxml.region[i].
obj.state=myxml.region[i].
arr.push(obj);
this.home=new mx.collections.ArrayCollection(arr);
&/fx:Script&
&fx:Declarations&
&!-- 将非可视元素(例如服务、值对象)放在此处 --&
&s:HTTPService id="ser" result="ResultHandler(event)" resultFormat="e4x" url="data/data.xml" /&
&/fx:Declarations&
&s:DataGrid dataProvider="{home}"&
&/s:DataGrid&
&/s:Application&
1.1.5 将ArrayCollection转化为XML
&?xml version="1.0" encoding="utf-8"?&
&s:Application xmlns:fx="/mxml/2009"
xmlns:s="library:///flex/spark"
xmlns:mx="library:///flex/mx"
minWidth="955" minHeight="600" creationComplete="appInit(event)"&
&fx:Script&
import mx.collections.ArrayC
import mx.collections.HierarchicalD
import mx.events.FlexE
[Bindable]
var arr1:mx.collections.ArrayC
protected function appInit(event:FlexEvent):void
// TODO Auto-generated method stub
var arr:mx.collections.ArrayCollection =new mx.collections.ArrayCollection();
arr.addItem({id:"01",name:"大众",type:"汽车"});
arr.addItem({id:"02",name:"宝马",type:"汽车"});
arr.addItem({id:"03",name:"奔驰",type:"汽车"});
var root:XML=new XML("&root /&");
for (var i:int = 0; i & arr. i++)
var node:XML=new XML("&node /&");
node.id=arr[i].
node.name=arr[i].
node.type=arr[i].
root.appendChild(node);
trace(root);
// 定义多个富有子节点
arr1 =new mx.collections.ArrayCollection([
{id:"01",name:"汽车名称",type:"汽车类型",children:[{id:"01-01",name:"大众",type:"汽车"},{id:"01-02",name:"本田",type:"汽车"}]},
{id:"02",name:"书籍名称",type:"书籍类型",children:[{id:"02-01",name:"神话",type:"小说"},{id:"02-02",name:"美女",type:"小说"}]}
var data:XML=new XML("&data /&");
for (var i:int = 0; i & arr1. i++)
var region:XML=new XML("&node /&");
region.id=arr1[i].
region.name=arr1[i].
region.type=arr1[i].
for (var k:int = 0; k & arr1[i].children. k++)
var child:XML=new XML("&child /&");
child.id=arr1[i].children[k].
child.name=arr1[i].children[k].
child.type=arr1[i].children[k].
region.appendChild(child);
data.appendChild(region);
trace(data);
adg.dataProvider=new HierarchicalData(arr1);
&/fx:Script&
&fx:Declarations&
&!-- 将非可视元素(例如服务、值对象)放在此处 --&
&/fx:Declarations&
&mx:AdvancedDataGrid id="adg"&
&mx:columns&
&mx:AdvancedDataGridColumn dataField="id"/&
&mx:AdvancedDataGridColumn dataField="name"/&
&mx:AdvancedDataGridColumn dataField="type"/&
&/mx:columns&
&/mx:AdvancedDataGrid&
&/s:Application&
1.2 数据捆绑
1.2.1 使用{}实现绑定。
在前面的很多例子中都设定过组件的数据源,基本做法是:使用[Bindable]定义一个可绑定的变量:
[Bindable]
Private var arr1:A
同时,将这个变量作为数据源,使用日来绑定到一个组件上:
&mx: ComBox dataProvider="{arr1}" /&
另外,除了可以定义可绑定的变量外,还可以定义可绑定的类,只需要把[Bindable]放在类的声明的上方即可。
1.2.2 使用Binding标签实现绑定。
使用Binding标签实现同{}相同效果。通常情况下,使用{}和Binding标签效果是一样的.但是使用Binding标鉴可以实现为同一个目标源定义不止一个数据源或者在绑定源处加一个附加表达式绑定到目标处。
&?xml version="1.0" encoding="utf-8"?&
&s:Application xmlns:fx="/mxml/2009"
xmlns:s="library:///flex/spark"
xmlns:mx="library:///flex/mx" minWidth="955" minHeight="600"&
&s:layout&
&s:VerticalLayout/&
&/s:layout&
&fx:Script&
private function bindFunc(val:String):String
return "第三个文本框输入的是:"+input3.
&/fx:Script&
&fx:Script&
import mx.events.FlexE
&/fx:Script&
&fx:Declarations&
&!-- 将非可视元素(例如服务、值对象)放在此处 --&
&/fx:Declarations&
&fx:Binding source="input2.text" destination="input3.text"/&
&s:TextInput x="44" y="82" id="input1"/&
&s:TextInput id="input2" text="{input1.text}"/&
&s:TextInput id="input3"/&
&s:TextInput width="359" text="{bindFunc(input3.text)}"/&
&/s:Application&
使用对象作绑定数据源
将Flex与服务器语言通信时经常用到某个对象作绑定源。例如,使用BlazeDS与JavaEE通信,通常就是在ActionScript中创建对象,给对象各属性赋值后映射为Java中的对象传递到POJO java类中进行处理。
&?xml version="1.0" encoding="utf-8"?&
&s:Application xmlns:fx="/mxml/2009"
xmlns:s="library:///flex/spark" creationComplete="appInit(event)"
xmlns:mx="library:///flex/mx" minWidth="955" minHeight="600"&
&fx:Script&
import mx.events.FlexE
import mx.utils.ObjectProxy;
private var obj:O
[Bindable]
private var objproxy:ObjectProxy;
protected function appInit(event:FlexEvent):void
obj={userName:"admin",passWord:"123"};
objproxy=new ObjectProxy(obj);
protected function button1_clickHandler(event:MouseEvent):void
objproxy.userName=input1.
objproxy.passWord=input2.
&/fx:Script&
&fx:Declarations&
&!-- 将非可视元素(例如服务、值对象)放在此处 --&
&/fx:Declarations&
&s:Button x="246" y="179" label="测试" click="button1_clickHandler(event)"/&
&s:Label x="171" y="104" text="姓名:"/&
&s:Label x="167" y="144" text="密码:"/&
&s:TextInput id="input1" x="229" y="104"/&
&s:TextInput id="input2" x="229" y="134"/&
&s:Label x="135" y="282" text="用户密码为:"/&
&s:Label x="147" y="241" text="用户名为:"/&
&s:Label x="229" y="241" text="{objproxy.userName}"/&
&s:Label x="229" y="282" text="{objproxy.passWord}"/&
&/s:Application&
2 Flex中必备
简单的说:
Array更新不通知组件ArrayList和ArrayCollection更新通知组件ArrayCollection可以排序sort和过滤filterArrayList不能
当Array的数据随着时间发生变化的时候,用它作为数据源的组件无法感知这种变化。例如:myArray.push ("new value"); 利用push方法向Array中添加一新的数据,如果一个List列表组件用它作为数据源,List不会增加刚刚添加的这个数据。而对于ArrayCollection, 当数据发生变化,会通知相应的组件变化。例如:myArrayCollection.addItem ("new item"); ,那么,如果List用它作为数据源,则List列表的内容会增加。ArrayCollection 实现了ICollectionView接口,它在FLEX中被定义为数据集。他提供了更加强大的搜索,过滤,排序,分类,更新监控等功能。FDK2类也提供了类似的XMLListCollection类。两者的不同点在于,array作为数据源与控件绑定的时候,不会得到控件的更新,除非控件被重绘或者数据源被重新分配,这时候,存储在Collection类的一个array的拷贝会变成一个对象,因此Collection类具有一个特点就是能够处理“数据同步”。在FLEX4中产生了一种新的数据类型ArrayList.ArrayList实现了IList 接口,底部用Array用为数据源。本质上,ArrayList是一个轻量级的ArrayCollection。可以用来作为数据源绑定到控件上,与ArrayCollection的不同是,它不能过滤数据。需要注意的是,基于Spark 的控件列表,不能直接用Array用为数据源,必须实现IList接口,这应该也是一种新的数据类型ArrayList 产生的原因之一
浏览 11403
andyny2006
浏览: 26241 次
来自: 广州
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'

我要回帖

更多关于 java 数组赋值 的文章

 

随机推荐