flash as3 - понимание того, как передавать проанализированные данные XML в классы - PullRequest
0 голосов
/ 01 декабря 2011

Я традиционно весь свой код as3 в одном включенном файле .as, а не в виде пакетов / файлов классов, но я пытаюсь осуществить этот переход.Я немного озадачен тем, как передавать информацию туда и обратно между файлами классов.Например, то, что я пытаюсь сделать, это своего рода диаграмма узлов, где щелчок по определенному узлу прорастет его дочерними узлами, а щелчок по дочернему узлу прорастет его дочерними узлами и т. Д. У меня есть основной класс, Main.as, который я собирался сделать, чтобы разобрать XML-документ и сохранить массив всех соответствующих данных для каждого узла (такие как заголовок, ссылка и т. д.).Затем у меня есть файл класса с именем Node.as, который фактически строит узел, добавляет его на сцену и настраивает его слушателей и анимацию движения.

Мой вопрос: вся ли информация для узловхранится в 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 Ответ

1 голос
/ 01 декабря 2011

Передайте экземплярам вашего класса узлов содержимое, которое они должны отображать, используя параметры в конструкторе.

Например:

 package   {  
     public class Node extends MovieClip   {   

         private var contentToDisplay:XML;

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

 }

Таким образом, вы передаете информацию при создании экземпляров этогоКласс и сохранить его как переменную, которую вы можете использовать внутри этого экземпляра.Вы также можете установить некоторую переменную "id", чтобы помочь идентифицировать ваш узел вне класса.Или вы создаете узлы в своем основном классе, передаете им информацию, которую они должны отобразить, и сохраняете ссылку на узлы, созданные в массиве в вашем основном классе.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...