0

我的问题是这样的问题:ArgumentError: Error #1063

不同之处在于我的文档类加载后我收到了这个错误,我点击了一个按钮来启动 Game() 类。PowerUp() 类会自动生成错误,而不会被程序调用。我发现 PowerUp() 类构造函数中的第一个参数没有接收到值。

public function PowerUp(tar:Object,s:Number=1, a:String="bonusShots",t:String="Multi Shot", l:int=100):void {/// 更多代码

我需要将舞台上的影片剪辑“thePlayer”放入 PowerUp() 类构造函数的第一个参数中。

当我将“thePlayer”添加到构造函数中时,我得到另一个错误“对象不是编译时间常量”。

 var thePlayer: MovieClip=thePlayer;

public function PowerUp(tar:Object=thePlayer,s:Number=1, a:String="bonusShots",t:String="Multi Shot", l:int=100):void {// 更多代码

问题:如何将“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 
4

2 回答 2

1
var thePlayer: MovieClip=thePlayer;

在这里,您将变量分配为自身。尝试使用类似的东西:

var _thePlayer:Player = new Player();

Player 必须存在于某处,作为类或共享库项目。

如果您总是将 Player 对象传递给 PowerUp 类,您不妨将第一个参数转换为 Player。

public function PowerUp(tar:Player,
于 2012-11-07T07:38:48.617 回答
1

您不能为自动构造的类的构造函数提供参数。如您所见,您只能将编译时常量用作默认值。换句话说,只有编译器在解析代码时才将其理解为值。

您最好的选择是避免在构造函数中传递参数,并将其视为运行时所需的技术函数,而是在您可以自己调用的其他函数中执行初始化工作。

例如,假设这是您的文档类:

public class DocumentClass extends Sprite {
    public function DocumentClass() {
        super();
    }
    public function powerUp(tar:MovieClip):void {
        this.tar = tar;
    }
}

在其他地方,您需要初始化此类,您将调用该powerUp函数。

于 2012-11-07T07:39:08.397 回答