我的问题是这样的: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函数。

09-15 15:39