我传统上将所有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?
}
}
答案 0 :(得分:1)
将构造函数中使用参数的内容传递给节点类实例。
例如:
package {
public class Node extends MovieClip {
private var contentToDisplay:XML;
public function Node(_contentToDisplay:XML) {
contentToDisplay = _contentToDisplay;
drawNode();
}
}
通过这种方式,您可以在构建该类的实例时传递信息,并将其存储为可在该实例内部使用的变量。您还可以设置一些“id”变量,以帮助从类外部识别您的节点。或者您在主类中创建节点,向它们传递应显示的信息,并在主类中存储在数组中创建的节点的引用。
希望它有所帮助!