在AS3中创建顶级类的副作用?

时间:2010-12-15 19:16:37

标签: actionscript-3 flash package naming-conventions

除了可能的类名冲突外,在ActionScript 3中创建一个名为“Tracer”的顶级(无包名)类是否有任何问题或副作用?我想保持这样的顶级,所以我不必在我的代码中使用import语句。到目前为止,我没有遇到任何问题。

4 个答案:

答案 0 :(得分:2)

最佳做法是在适当的时候使用包裹。如果你正在构建的是一个实用程序,最好将它放在util包中,而不是留在顶层。

如果您正在开发可以被视为核心功能的内容,那么实施顶级成员就没有问题。

最后计划的是可重用性。如果你知道你正在构建一些你永远不会重用的东西(最终的实现类),不要太担心它是一个顶级类,因为它一旦你编译了swf它应该继续工作

相反,如果您要制作一个您希望重新用作框架的功能,那么最好将其作为框架级成员为未来发展的灵活性。

答案 1 :(得分:2)

zzzzBov的回答是好建议。但要明确地回答你的问题:可能的名称冲突确实是你正在做的事情的唯一副作用。

答案 2 :(得分:1)

我即将描述一个我想到的可能问题,我发布它是因为它在技术上并不是名称冲突(字母大小写不同)。

假设您有一个顶级类,除了字母大小写的区别(例如“flash”,“fl”,“com”或自定义包)之外,它们共享顶级包的名称。如果你输入类似“var x:”的东西然后尝试输入一个完全限定的类名...那么像FlashDevelop这样的程序中的代码完成引擎将默认为你的“Flash”类(如果存在),而不是你可能想要输入的“flash”包。这是非常恼人的,主要是因为它有点意义,它以这种方式运作,并且它必须代码完成一个或另一个:(

因此,要非常小心地将顶级类命名为与包名称(顶级或其他)拼写相同的内容。

答案 3 :(得分:1)

我在一个自定义包中有一个名为Vector的类并使用flash 9,一切都很完美,直到我不得不使用flash 10来保存文件问题是我无法创建我的类Vector的实例error TypeError:错误#1007:尝试对非构造函数进行实例化。修复它的唯一方法是更改​​AS类的名称,幸运的是后端类的绑定适用于我的Java类Vector。

似乎flash没有处理顶级类的类包。

我希望这有助于某人,即使这个问题的日期差不多是2年前。