Jun 19

在前面的例子ActionScript3.0中利用forEach循环遍历一个数组(Array)对象并且修改其中的项目中我们利用forEach对一个数组进行了遍历,接下来的例子演示了Flex中如何利用Array类中的every()事件,循环遍历一个数组。

让我们先来看一下Demo(可以右键View Source或点击这里察看源代码):


下面是完整代码(或点击这里察看):

Download: main.mxml
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
  3.         layout="vertical"
  4.         verticalAlign="middle"
  5.         backgroundColor="white">
  6.  
  7.     <mx:Style>
  8.         .greenModal {
  9.             modalTransparencyColor: haloGreen;
  10.         }
  11.  
  12.         .redModal {
  13.             modalTransparencyColor: red;
  14.         }
  15.     </mx:Style>
  16.  
  17.     <mx:Script>
  18.         <![CDATA[
  19.             import mx.controls.Alert;
  20.             import mx.utils.StringUtil;
  21.  
  22.             private function checkArray(arr:Array):void {
  23.                 textArea.text = "";
  24.                 dataGrid.dataProvider = arr;
  25.  
  26.                 var success:Boolean = arr.every(isNumeric);
  27.                 if (success) {
  28.                     Application.application.styleName = "greenModal";
  29.                     Alert.show("Array is numeric.", // text
  30.                                 "SUCCESS",          // title
  31.                                 Alert.OK,           // flags
  32.                                 null,               // parent
  33.                                 null);              // closeHandler
  34.                 } else {
  35.                     Application.application.styleName = "redModal";
  36.                     Alert.show("Array has non-numeric elements.",
  37.                                 "ERROR",
  38.                                 Alert.OK,
  39.                                 null,
  40.                                 null);
  41.                 }
  42.             }
  43.  
  44.             private function isNumeric(element:Object, index:int, arr:Array):Boolean {
  45.                 var str:String = StringUtil.substitute("{0} ({1})\n",
  46.                             element.label,
  47.                             element.data);
  48.                 textArea.text += str;
  49.                 return ((element.hasOwnProperty("data")) &&
  50.                             (element.data is Number));
  51.             }
  52.         ]]>
  53.     </mx:Script>
  54.  
  55.     <mx:Array id="numericArray1">
  56.         <mx:Object label="One" data="1" />
  57.         <mx:Object label="Two" data="2" />
  58.         <mx:Object label="Three" data="3" />
  59.         <mx:Object label="Four" />
  60.         <mx:Object label="Five" data="5" />
  61.         <mx:Object label="Six" data="6" />
  62.         <mx:Object label="Seven" data="7" />
  63.     </mx:Array>
  64.  
  65.     <mx:Array id="numericArray2">
  66.         <mx:Object label="Eight" data="8" />
  67.         <mx:Object label="Nine" data="9" />
  68.         <mx:Object label="Ten" data="10" />
  69.         <mx:Object label="Eleven" data="11" />
  70.         <mx:Object label="Twelve" data="12" />
  71.     </mx:Array>
  72.  
  73.     <mx:ApplicationControlBar dock="true">
  74.         <mx:Button label="Check Array 1"
  75.                 click="checkArray(numericArray1);" />
  76.         <mx:Button label="Check Array 2"
  77.                 click="checkArray(numericArray2);" />
  78.     </mx:ApplicationControlBar>
  79.  
  80.     <mx:HBox>
  81.         <mx:DataGrid id="dataGrid" rowCount="7">
  82.             <mx:columns>
  83.                 <mx:DataGridColumn dataField="label" />
  84.                 <mx:DataGridColumn dataField="data" />
  85.             </mx:columns>
  86.         </mx:DataGrid>
  87.         <mx:TextArea id="textArea"
  88.                 editable="false"
  89.                 width="{dataGrid.width}"
  90.                 height="{dataGrid.height}" />
  91.     </mx:HBox>
  92.  
  93. </mx:Application>
代码:Peter deHaan 翻译/整理/编译:minidxer

written by Minidxer  |  tags: , ,

Related Post

Leave a Reply