我的问题是这样的:ArgumentError: Error #1063
区别在于,在我的文档类加载后,我收到此错误,然后单击一个按钮以启动Game()类。 PowerUp()类自动生成错误,而不会被程序调用。我发现PowerUp()类构造函数中的第一个参数没有收到值。
我需要将舞台上的动画片段“thePlayer”放入PowerUp()类构造函数的第一个参数中。
当我将“thePlayer”添加到构造函数中时,出现另一个错误“对象不是编译时间常数”。
问题:如何将'thePlayer'电影剪辑合并到PowerUp类的构造函数中?
这是PowerUp类的代码
public class PowerUp extends Sprite{
protected var type:String;// type of power up
protected var strength:Number;// power of power up
protected var attribute:String;// attribute effected by power up
protected var target:Object;// target to buff/boost/perk up/ empower/improve/enhance
protected var lifespan:int;// the life span of a perk
protected var maxLifeSpan:int; // max time to live grahic
const BAR_WIDTH=100;// width of rect
const BAR_HEIGHT=15;// height of rect
public function PowerUp(tar:Object,s:Number=1, a:String="bonusShots",t:String="Multi Shot", l:int=100):void {
type=t;
strength=s;
attribute=a;
target=tar;
lifespan=l;
maxLifeSpan=l;
perkName.text=t;
perkName.blendMode="invert";
// apply perk to target
target[attribute]+=strength;
}// end constructor
最佳答案
您不能为自动构造的类的构造函数提供参数。如您所见,您只能将编译时间常数用于默认值。换句话说,只有编译器在解析代码时才将其理解为值。
最好的选择是避免在构造函数中传递参数,并将其视为运行时所需的技术功能,而应在可以调用自己的其他函数中执行初始化工作。
例如,假设这是您的文档类:
public class DocumentClass extends Sprite {
public function DocumentClass() {
super();
}
public function powerUp(tar:MovieClip):void {
this.tar = tar;
}
}
在其他需要初始化此类的地方,您将调用
powerUp
函数。