2012-03-06 47 views
0

使用RPG类型的闪光灯,我必须能够从很多位置控制文本框。造成我麻烦的是库存。我需要能够从库存剪辑(实例名称“inventory”)中访问带有“statusWindow”实例的文本框,因此,当我将鼠标悬停在动画剪辑中的某个项目上时,它将更改舞台上的状态窗口。AS3如何从动画片段内访问主时间线上的动画片段?

在这种情况下,我想将鼠标悬停在主时间轴的inventory.invHealth上以获取显示。 itemName和itemProps是包含有关项目信息的字符串。

我试过以下,但它给了我一个“可能未定义”的错误。

invHealth.addEventListener(MouseEvent.MOUSE_OVER, itemStats); 

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

我不是在AS3非常擅长,只是还没有,所以如果你还可以解释你的代码,当你将它张贴 - 尽管大多数人通常做anyway-我将非常感激。提前致谢!

回答

0

我建议你将信息数据存储在类对象中;该对象应该可以通过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")); 
+0

我是否需要做一个外部文件。至于这个? – 2012-03-06 15:36:41

+0

你不需要,但如果你这样做是件好事。将每个类放在单独的.as文件中。在初始化方法中创建类的对象。使对象可以通过各种剪辑访问。 – vulkanino 2012-03-06 15:39:51

+0

听起来不错,让我试试看。 – 2012-03-06 15:49:59

相关问题