是否可以将构造函数参数传递给我放在舞台上的实例对象?实例对象的实例化是否像.NET WinForms一样集中在某处,因此我可以编辑{{1}构造函数?
xxx = new CustomRecangle()
答案 0 :(得分:4)
我不相信你能做到这一点,但你有两个选择:
1)您可以将其滚动到Flash组件中。使您想要在AS文件中设置的各种属性可检查,将其编译为组件并将其放在舞台上。然后,您可以删除多个实例,并将这些实例的参数设置为在每个实例中都是唯一的。
2)你可以简单地添加一个在你的对象上调用的“init()”函数,并将其设置为将各种属性传递给init()而不是构造函数。
最后,我相信合法地构成了BLACK MAGIC,所以除非你绝对不得不这样做,否则不要这样做:
我必须这样做一次,因为实际上没有别的办法。基本上我们假设你在舞台上有200个对象,每个对象都有一个唯一的实例名称。返回并手动重做其中的每一个以接受自定义值将是太多的工作,并且由于程序的架构方式,在所有内容上编写init调用真的很难。
相反,您可以在每个对象上使用this.name。编写一个静态MyObjectManager类,它包含一个包含映射到实例名称的对象的字典。然后在对象的构造函数中,您可以编写类似“init(MyObjectManager.dict [this.name])”的内容,并将bob作为您的叔叔。
如果这有意义,请告诉我。现在,确实理解以这种方式存在大量问题 - 它使您的代码更新变得棘手,并且它将您的所有逻辑紧密地耦合到您的状态命名约定,因此如果您的任何实例名称已关闭,那么您'重新拧紧。
但是,这是一个选择。在这里概述的三条路径之间,你应该能够实现你需要的任何东西!
答案 1 :(得分:1)
是的,你可以,但在扩展类的构造函数中,不要忘记调用super()函数,它会调用基类的构造函数。
答案 2 :(得分:0)
如果它是您通过Flash IDE附加的符号,请参阅this回答。
答案 3 :(得分:0)
我认为最好的办法是从Flash阶段中删除对象。使它成为一个库类。并做一些类似
的事情var myRectangle = new CustomRectangle(100, 100);
myRectangle.x = 200; // These should be whatever its location needs to be
myRectangle.y = 200;
addChild(myRectangle);