2013-06-01 92 views
0

我有一個TheList.as類..我已經創建了一個Android應用程序的列表。 這裏是TheList.as(砍倒在具體的東西這個問題)如何根據另一個文本字段更改數組?

public var _ListItem:ListItem; 
public var _Data:Array; 
public var _Values:Array; 
public var $CurrentValue:String; 
public var _TextLabel:TextField; 

public function TheList(Data:Array,Values:Array) 
    { 
     _Data = Data; 
     _Values = Values; 



     initialize(); 
    } 

    private function initialize():void 
    { 

     _TextLabel = new TextField(); 
     addChild(_TextLabel); 
     _TextLabel.text = "Data"; 
     _Container = new ListContainer ; 
     addChild(_Container); 
     _Container.x = 0; 
     _Container.y = 0; 
     currentY = _Container.y; 
     lastY = _Container.y; 

     for (var i:int = 0; i < _Data.length; i++) 
     { 
      _ListItem = new ListItem ; 
      _Container.addChild(_ListItem); 

      _ListItem.y = _ListItem.height * i; 
           _ListItem.addEventListener(MouseEvent.MOUSE_DOWN,onItemDown,false,0,true); 
      _ListItem.addEventListener(MouseEvent.MOUSE_UP,onItemUp,false,0,true); 
      _ListItem.mouseChildren = false; 
      _ListItem.value = _Values[i]; 
      _ListItem.name = _Data[i]; 
      _ListItem.ItemLabel.text = _ListItem.name ; 


     } 

    } 

這裏是「的thelist」正在被使用的類(再次削減到具體的東西)

$myList = new TheList($Data,$Values); 
     addChild($myList); 
     $myList.x = -240; 
     $myList.y = -203; 
     $myList.visible = false; 

     $ListFrom = new TheList($DataFromTo, $ValuesFromTo); 
     addChild($ListFrom); 
     $ListFrom.x = -240; 
     $ListFrom.y = -203; 
     $ListFrom.visible = false; 
     $ListFrom._TextLabel.text = $DataFromTo[0]; 

     $ListTo = new TheList($DataFromTo, $ValuesFromTo); 
     addChild($ListTo); 
     $ListTo.x = -240; 
     $ListTo.y = -203; 
     $ListTo.visible = false; 
     $ListTo._TextLabel.text = $DataFromTo[0]; 

現在我想要實現的是我想要更改「$ Data」和「$ Values」數組..您可以看到我有一個主列表和兩個子列表......當主列表中選擇「時間」時,我想子列表填充與「時間」相關的單位名稱...我試過

if($myList._TextLabel.text == "Time") 
{ 
$ListFrom._Data = ["this", "this", "this" etc] 
} 

但它不工作。我也沒有得到任何錯誤。我非常感謝任何幫助!

+0

偏離主題。請查看AS3約定的類,變量和字段名稱。它傷害了我的眼睛。 – Larusso

回答

1

你試圖達到的目標不是用這種方式來解決的。你用數據字段初始化你的列表。當您重置數據時,您需要再次使您的列表無效。你可以通過一個項目設置器來達到這個效果

private var __Data:Array; 

public function get _Data():Array 
{ 
    return __Data; 
} 

public function set _Data(value:Array):void 
{ 
    this.__Data = value; 
    initialize(); 
} 

確保你在再次重建之前首先清理你的列表。

代碼:

$ListFrom._Data = ["this", "this", "this" etc] 

將會被自動調用的二傳手。 getter和setter方法看起來像一個函數,但是像屬性一樣被調用。表示:

object.property = "something" //will call the setter 
var something:String = object.property //will call the getter 
+1

正確的想法,請注意上面編碼的初始化方法會在列表中添加組件的新實例,並且原始組件仍然存在。所以你想循環使用列表中的子項並在新項目創建之前將其刪除。 –

+0

如何設置數組的值?我的意思是我在不同的類中使用條件..我怎麼說(如果(myText.text ==「東西」){我如何在這裏使用set函數?})....「我從來沒有使用過setters和之前的獲得者!「 –

+0

您已經編寫了代碼。你唯一需要做的就是從舞臺上刪除所有列表項(如Sunil D.描述的),並再次調用你的初始化函數。 – Larusso

相關問題