我目前有三个班级,Main,Externals和Page。
Main类创建一个Externals类的实例,它加载XML,并且一旦加载了XML,Externals实例也会创建一个Page类的实例,然后使用来自Externals类的信息来填充自身。
我最初想要Externals是一个静态类,然后我发现在Actionscript 2.0中没有静态类,只有静态方法。
然后我将所有外部方法声明为静态,但发现当我尝试访问它们时,构造函数未运行,并且未加载和解析XML。我想过每次都要重写加载和解析XML的方法,但是意识到A:那真的会浪费网络资源;和B:由于网络比处理器慢,我会遇到计时问题,因为代码会尝试访问尚未加载的数据。
然后我决定将所有内容还原为实例方法,并在Main类中创建一个实例,该实例将运行其构造函数,使用XML加载自身,将所有内容解析为整齐的getter,然后才创建Page的实例,创建将使用XML数据的页面。
但是我(现在仍然)留下了一个难题:我只能在Externals类中创建Page类的实例,因为它只能在已经加载XML数据之后启动,但我可以'从除Main类之外的任何地方访问我收集到我的Externals实例中的数据。我在我的Page实例中获得它的唯一方法是创建一个新实例,但这是一个非常糟糕的主意,原因有两个:1:上述时序问题;和2:Externals类在完成加载XML时创建一个新页面,因此它最终创建一个新的Page实例,它创建一个新的Externals实例,它创建一个新的Page实例,等等。
我尝试将Externals的实例放在电影的根上,如下所示:
_root.externals:Externals = new Externals();
但我也无法访问它。
现在我有点难过了。我真的不明白如何做到这一点,但我知道必须有办法。有谁看到我在这里做错了什么?
答案 0 :(得分:0)
我想您可以尝试使用Singleton设计模式:http://voices.yahoo.com/building-singleton-actionscript-2-as2-4849702.html
答案 1 :(得分:0)
我猜测外部类是单身?您可以将一个Externals对象的引用传递给所有其他对象。
或者另一种方式(虽然我并不总是推荐它,但看起来像你想要做的)是在普通的根级别创建对象,然后通过执行:_root在其他对象中访问它。 externalsObject