AS3:将非特定函数包含在类中的最佳方法

时间:2011-09-26 09:43:52

标签: actionscript-3 actionscript

说我有以下类别的设置......

  

道路 - 扩展MovieClip
汽车 - 延伸道路   控制器 - 扩展汽车

我想在其中加入一些常用的数学函数,以使它们更快,例如(用一些快速的按位版本替换Math类)。

将这些函数合并到所有函数中的最佳方法是什么,而无需在类中编写函数或从函数类扩展。是以最快的方式导入课程还是他们更好的方式?

2 个答案:

答案 0 :(得分:1)

我同意您的设计可能需要一些工作的评论。如果没有以某种方式引用它的import语句,则不能在另一个类中使用Class - 即使您只是导入了Class实现的接口。

处理此问题最灵活的方法是将功能对象传递给需要它的对象,而不是让该对象创建实例本身。这将允许您在需要时交换不同的实现(例如,您可能希望使用模拟实例进行单元测试,或者您可能需要针对移动设备优化的略微不同的功能)。

您可以在构造函数中传入实例,也可以使用属性(这样可以自由地在运行时更改实现)。

答案 1 :(得分:1)

您可以创建一个可以导入任何类的公共函数。基本语言中的一些示例是navigateToURL()和getTimer()。这些只是包中的公共函数,而不是类。 所以创建一个像这样的公共函数

package nameOfYourPackage{

  public function doSomething(a:arguments):returnType
  {
    // Stuf the function does goes here;
  }
}

然后您可以将其导入任何类,如下所示:

import nameOfYourPackage.doSomething;

然后你可以在类中的任何地方调用它,将其导入为:

doSomething(args);