Jun 19
在前面的例子ActionScript3.0中利用forEach循环遍历一个数组(Array)对象并且修改其中的项目中我们利用forEach对一个数组进行了遍历,接下来的例子演示了Flex中如何利用Array类中的every()事件,循环遍历一个数组。
让我们先来看一下Demo(可以右键View Source或点击这里察看源代码):
下面是完整代码(或点击这里察看):
Download: main.mxml
- <?xml version="1.0" encoding="utf-8"?>
- <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
- layout="vertical"
- verticalAlign="middle"
- backgroundColor="white">
- <mx:Style>
- .greenModal {
- modalTransparencyColor: haloGreen;
- }
- .redModal {
- modalTransparencyColor: red;
- }
- </mx:Style>
- <mx:Script>
- <![CDATA[
- import mx.controls.Alert;
- import mx.utils.StringUtil;
- private function checkArray(arr:Array):void {
- textArea.text = "";
- dataGrid.dataProvider = arr;
- var success:Boolean = arr.every(isNumeric);
- if (success) {
- Application.application.styleName = "greenModal";
- Alert.show("Array is numeric.", // text
- "SUCCESS", // title
- Alert.OK, // flags
- null, // parent
- null); // closeHandler
- } else {
- Application.application.styleName = "redModal";
- Alert.show("Array has non-numeric elements.",
- "ERROR",
- Alert.OK,
- null,
- null);
- }
- }
- private function isNumeric(element:Object, index:int, arr:Array):Boolean {
- var str:String = StringUtil.substitute("{0} ({1})\n",
- element.label,
- element.data);
- textArea.text += str;
- return ((element.hasOwnProperty("data")) &&
- (element.data is Number));
- }
- ]]>
- </mx:Script>
- <mx:Array id="numericArray1">
- <mx:Object label="One" data="1" />
- <mx:Object label="Two" data="2" />
- <mx:Object label="Three" data="3" />
- <mx:Object label="Four" />
- <mx:Object label="Five" data="5" />
- <mx:Object label="Six" data="6" />
- <mx:Object label="Seven" data="7" />
- </mx:Array>
- <mx:Array id="numericArray2">
- <mx:Object label="Eight" data="8" />
- <mx:Object label="Nine" data="9" />
- <mx:Object label="Ten" data="10" />
- <mx:Object label="Eleven" data="11" />
- <mx:Object label="Twelve" data="12" />
- </mx:Array>
- <mx:ApplicationControlBar dock="true">
- <mx:Button label="Check Array 1"
- click="checkArray(numericArray1);" />
- <mx:Button label="Check Array 2"
- click="checkArray(numericArray2);" />
- </mx:ApplicationControlBar>
- <mx:HBox>
- <mx:DataGrid id="dataGrid" rowCount="7">
- <mx:columns>
- <mx:DataGridColumn dataField="label" />
- <mx:DataGridColumn dataField="data" />
- </mx:columns>
- </mx:DataGrid>
- <mx:TextArea id="textArea"
- editable="false"
- width="{dataGrid.width}"
- height="{dataGrid.height}" />
- </mx:HBox>
- </mx:Application>
代码:Peter deHaan 翻译/整理/编译:minidxer
