2011-11-30 36 views
0

傳統上,我所有的as3代碼都包含在一個.as文件中,而不是作爲包/類文件,但我試圖做出這種轉換。我對如何在類文件之間來回傳遞信息有點困惑。例如,我試圖做的是一種節點圖,點擊某個節點會發芽它的子節點,點擊一個子節點會發芽它的子節點等等。我有一個主類Main .as,我將分析一個XML文檔併爲每個節點存儲所有相關數據的數組(如標題,鏈接等)。然後我有一個名爲Node.as的類文件,它實際上構建了該節點,將其添加到舞臺上,並設置其偵聽器和補間動畫。flash as3 - 瞭解如何將解析的XML數據傳遞到類

我的問題是 - 如果節點的所有信息都存儲在Main.as中,但點擊處理是在Node.as中完成的,那麼Node.as如何知道要分配給每個添加節點的屬性(即,它如何從Main.as訪問數組以將屬性分配給創建的剪輯)?

下面是一個示例代碼結構:

Main.as:

package 
{ 
    public class Main extends MovieClip 
    { 

     public function Tree() 
     { 
      initTree(); 
     } 

     public function initTree(){ 
      parseXML(); 
      var firstNode:Node = new Node(); 
      addChild(firstNode); 
     } 
    } 
} 

Node.as:

package 
{ 
    public class Node extends MovieClip 
    { 
     public function Node() 
     { 
      drawNode(); 
     } 

    private function drawNode(parentNode = null){ 
     //draw the node shape 
     //add the shape to a movie clip 
     //assign listeners to the movie clip 
     //add movie clip to the stage 
    } 

    private function nodeAdded { 
     //position the node 
     //animate the node 
    } 

    private function nodeOver (e:MouseEvent):void { 
     //fetch the information for this node from the XML in Main.as - how do I do this? 
    } 
} 

回答

1

傳遞到您的節點類實例的內容就應該顯示使用parameteres在構造函數。

例如:

package { 
    public class Node extends MovieClip { 

     private var contentToDisplay:XML; 

     public function Node(_contentToDisplay:XML) { 
       contentToDisplay = _contentToDisplay; 
       drawNode(); 
     } 

} 

這樣,你構建一個類的實例時傳遞的信息並將其存儲爲變量,你可以在該實例內部使用。你也可以設置一些「id」變量來幫助從課外識別你的節點。或者您在主類中創建節點,將它們應該顯示的信息傳遞給它們,並在主類中存儲數組中創建的節點的引用。

希望它有幫助!