Actionscript 3 AS3如何从电影剪辑中访问主时间线上的电影剪辑?

Actionscript 3 AS3如何从电影剪辑中访问主时间线上的电影剪辑?,actionscript-3,flash,Actionscript 3,Flash,在一个RPG类型的flash上工作,我必须能够从很多位置控制一个文本框。给我带来麻烦的是库存。我需要能够从inventory clip instance name inventory中访问带有statusWindow实例的文本框,因此当我将鼠标悬停在movieclip中的项目上时,它将更改舞台上的状态窗口 在本例中,我想将鼠标从主时间线移到inventory.invHealth上以获得显示。 itemName和itemProps是包含项目信息的字符串 我尝试了以下方法,但它给了我一个可能未定义的

在一个RPG类型的flash上工作,我必须能够从很多位置控制一个文本框。给我带来麻烦的是库存。我需要能够从inventory clip instance name inventory中访问带有statusWindow实例的文本框,因此当我将鼠标悬停在movieclip中的项目上时,它将更改舞台上的状态窗口

在本例中,我想将鼠标从主时间线移到inventory.invHealth上以获得显示。 itemName和itemProps是包含项目信息的字符串

我尝试了以下方法,但它给了我一个可能未定义的错误

    invHealth.addEventListener(MouseEvent.MOUSE_OVER, itemStats);

    function itemStats(e:Event):void
    {
        root.statusWindow.text = itemName+"\n"+itemProps;
    }

我对AS3还不是很熟练,所以如果你能在发布代码时解释一下——尽管大多数人通常都这么做——我会非常感激。提前谢谢

我建议您将信息数据存储在类对象中;该对象应该可以通过statusWindow和资源清册剪辑访问。这样就不需要读取文本框,您将对同一数据有不同的视图。例如:

public class GlobalVars
{
    public static var health:Number;
} 
当然,您可以创建更结构化的信息数据,如:

 public class Item
 {
      public function Item(setname:String)
      {
         name=setname;
         health = 100;
         quantity = 0;
      }

      private var name:String;
      private var health:Number;
      private var quantity:Number;
 } 

 var inventory:Array = new Array();
 inventory.push(new Item("hammer"));
 inventory.push(new Item("gun"));
 inventory.push(new Item("sponge"));

我需要为此创建一个外部.as文件吗?您不需要,但如果您这样做,这是一件好事。将每个类放入其单独的.as文件中。在初始化方法中创建类的对象。使对象可通过各种剪辑访问。