آرایه های انجمنی در Flex 2.0
  نحوه استفاده از یک آرایه ی انجمنی (Associative Array) برای ایجاد یک المان خاص به صورت پویا
   Adobe Flex
   ۲۹۶۵۶
   دانلود
   محمد (برنا) پورحسین
   ۱۳۸۶/۷/۶
ارسال لینک صفحه برای دوستان ارسال لینک صفحه برای دوستان  اضافه کردن به علاقه مندیها اضافه کردن به علاقه مندیها   نسخه قابل چاپ نسخه قابل چاپ

 

معمولا براي ايجاد يک سري از المان هاي خاص مثل متغيرها، توابع و ... به صورت پويا (dynamic)، مجبوريم از داده هاي خارجي (external) استفاده کنيم. در Flex نسخه 1.5 اين کار به راحتي قابل انجام بود. به اين صورت که داده ها را با قرار دادن بين دو براکت ( [] ) بارگذاري ميکرديم. اما به نظر مياد که در Flex نسخه ي 2 انجام اين کار به اين صورت امکان پذير نيست. به همين دليل، يکي از راه حلهايي که ميتوانيم براي حل اين مشکل از آن استفاده کنيم اين است که اين المان ها را داخل يک آرايه ي انجمني (Associative Array) ذخيره کنيم. يک آرايه ي انجمني بيشتر شبيه به يک "Hash Table" مي باشد و مهم ترين خاصيت آن اين است که دسترسي به آيتم هاي مختلف را بسيار آسان ميکند.
در قطعه کد نمونه زير، تابع مقدار دهنده اوليه توسط يک حلقه، تعدادي ArrayCollection توليد مي کند (در مورد ترجمه فارسي اين شي مطمئن نيستم. براي راحتي کار، در اينجا اون رو با واژه ي من در آوردي!!! کلکسيون-آريه نام مي بريم. مي توان اين شي را نوعي آرايه ي چند در چند با قابليت هاي ويژه در نظر گرفت). همچنين اين تابع براي شناسايي هر آرايه يک نام مشخص براي آن ايجاد مي کند.
به طور کلي، انتخاب يک نام از يک ليست موجب آن مي شود که اطلاعات مربوط به آن آرايه خاص در ليست ديگر نمايش داده شود....

قطعه کد مورد نظر بسيار ساده بوده و تنها توضيح کوچکي در مورد هر خط توسط کامنت داخل خود آن، براي فهم مطلب کفايت ميکند:


<?xml version="1.0" encoding="utf-8"?>
<!--
www.30Sharp.com - by : Mohammad (borna) Pourhossein -->
<mx:Application xmlns:mx="
http://www.adobe.com/2006/mxml" layout="absolute" horizontalAlign="left" creationComplete="initApp()" viewSourceURL="srcview/index.html">
 <mx:Script><![CDATA[
  import mx.collections.ArrayCollection;
  
  //تعريف متغييري که نام کلکسيون-آرايه ها را در خود ذخيره ميکند 
  [Bindable]private var _acLists:ArrayCollection; 
  //شي اي براي نگهداري کلکسيون-آرايه هاي ايجاد شده 
  private var _oAC:Object = new Object();          
   
  private function initApp():void
  {
   //ايجاد متغييري که ليست نام هاي تمام کلکسيون-آرايه هاي ايجاد شده را در خود ذخيره ميکند
   var aACNames:Array = new Array();                       
      //حلقه اي براي ايجاد آرايه هاي مورد نظر
      for(var i:int=1;i < 5; i ++)
      {                           
          //ساخت يک نام مخصوص براي هر کلکسيون-آرايه به ترتيب هر دور انجام حلقه
          var sACName:String = "ArrCol"+i;                      
          //اضافه کردن کلکسيون-آرايه مورد نظر به آرايه ي انجمني
          _oAC[sACName] = new ArrayCollection([i,"List#:" + i, "other(" + i + ") data"]);
          //اضافه کردن نام ايجاد شده به آرايه ي مورد نظر
          aACNames.push(sACName);                               
      }
      //قرار دادن نام مورد نظر هر آرايه در متغييري که به منظور ذخيره نام کلکسيون-آرايه ها در ابتداي پروژه تعريف شد
      _acLists = new ArrayCollection(aACNames);               
     }
   
     private function showAC(oEvent:Event):void
     {
      //گرفتن نام يک کلکسيون-آرايه
      var sACName:String = String(lstNames.value);           
      //استفاده از آن نام براي بازگرداندن اطلاعات مربوط به آن کلکسيون-آرايه
      var acTemp:ArrayCollection = _oAC[sACName];            
      //انتساب کلکسيون-آرايه به ليست دوم براي نمايش اطلاعات مربوط به آن
      lstAC.dataProvider = acTemp;                           
     }
   
 ]]></mx:Script>
 <mx:VBox x="10" y="10">
  <mx:Label text="Select an ArrayCollection" fontWeight="bold" />
     <mx:List id="lstNames" dataProvider="{_acLists}" rowCount="4" height="100" width="150" click="showAC(event)" />   
 </mx:VBox>
 <mx:VBox x="170" y="10">
     <mx:Label text="ArrayCollection contents" fontWeight="bold" />
     <mx:List id="lstAC"  rowCount="4" height="100" width="150" />    
 </mx:VBox>
</mx:Application>

در ضمن. من پروژه ي فوق را آپلود کردم تا با مشاهده ي آن به صورت شهودي تر، نحوه ي عملکرد آن رو خودتان دنبال کنيد.
براي مشاهده ي source پروژه : اينجا را کليک کنيد
براي دانلود پروژه ي مربوطه، مي توانيد از طريق لينک "دانلود" در بالاي همين صفحه اين کار را انجام دهيد.
(توجه داشته باشيد که براي ديدن پروژه ي فوق و يا هر نوع پروژ ه ي ديگر تحت Flex، بايد Flash Player نسخه ي 9 و يا بالاتر از آن را، روي دستگاه خود نصب کرده باشيد. اگر احيانا اين Player رو نداريد در همان صفحه ي مرورگر وب خود، قبل از نمايش پروژه، از شما ميخواهد که Player خود را update کنيد. با زدن دکمه ي Yes اين کار را انجام دهيد تا آخرين نسخه ي Flash Player موجود در سايت Adobe به صورت خودکار در دستگاه شما نصب گردد.)