我有
public function Shard() { } public function Shard(x:Number, y:Number, vx:Number, vy:Number, rotation:Number, spin:Number) { ... }
我得到了第二个构造函数:
找到了多个构造函数定义.可能未在代码中定义构造函数.
那么,ActionScript-3不能有多个构造函数?
不,你不能有多个构造函数既不具有不同签名的相同函数,但你可以使用默认参数:
public function Shard(x:Number=NaN, y:Number=NaN) { //... }
然后你可以打电话new Shard()
或new Shard(100)
或new Shard(100, 200)
或者你也可以使用变量参数:
public function Shard(...args){ if (args.length==0) { //... } else { //... var firstArg:Object=args[0]; //... } }
它甚至比那更广泛.AS3根本不支持函数重载.
您可以使用参数默认值模拟多个构造函数的外观和/或将参数动态分派给各种init
方法.或者,自定义对象工厂或静态创建方法可以提供帮助.