2011-11-30 3 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"변수를 설정하여 클래스 외부에서 노드를 식별 할 수 있습니다. 또는 메인 클래스에 노드를 만들고 표시해야하는 정보를 전달하고 메인 클래스의 배열에 만들어진 노드의 참조를 저장합니다.

희망이 있습니다.

관련 문제