如何使用其参数为类分配值? - 基本

时间:2017-04-13 19:18:04

标签: class actionscript-3 object parameters actionscript

所以我使用flash punk来处理游戏,我创建了一个基类,其中包含基于玩家选择的角色类型的角色统计数据。到目前为止,这是该课程的样子。

public class Stats extends Entity
{
        public var ATK:Number;
        public var ARM:Number;
        public var SPD:Number;
        public var WIS:Number;
        public var CRG:Number;
        public var STM:Number;

    public function Stats(ATK:Number=0, ARM:Number=0, SPD:Number=0, WIS:Number=0, CRG:Number=0, STM:Number=0)
    {

    }
    override public function update():void 
    {
        super.update();

    }
}

并且在另一个类中,当单击一个按钮时,我希望它创建一个带有参数的新stats类(2,6,2,4,4) 所以我做了

public var SkelStats:Stats = new Stats(2, 6, 2, 2, 4, 4);

然后将该对象(SkelStats)分配给玩家boss类型varriable。我这样做

public static var BossType:Stats;

然后在我添加的点击功能下的按钮类

Player.BossType = SkelStats; trace(Player.BossType.ATK)

并且跟踪总是输出0,除非我更改stats类本身的varriable(ATK)。当我在类的实例的参数中输入它时,为什么不改变?(SkelStats)

很抱歉,如果这太令人困惑,如果有任何不清楚的地方,我可以回答有关我的代码的任何问题。我只是不确定我在这里做错了什么。

1 个答案:

答案 0 :(得分:1)

我明白了!我所要做的就是将构造函数中的变量存储在类中。显然构造函数定义的变量是临时的。所以我改变了

    public var ATK:Number;
    public var ARM:Number;
    public var SPD:Number;
    public var WIS:Number;
    public var CRG:Number;
    public var STM:Number;

到这个

    public var attack:Number;
    public var armour:Number;
    public var speed:Number;
    public var wisdom:Number;
    public var courage:Number;
    public var stamina:Number;

并添加此

    attack  = ATK;
    armour  = ARM;
    speed   = SPD;
    wisdom  = WIS;
    stamina = STM;
    courage = CRG;

到这个

public function Stats(ATK:Number=0, ARM:Number=0, SPD:Number=0, WIS:Number=0, CRG:Number=0, STM:Number=0)
{

}

最终类看起来像这样,并且完全符合我的要求:

public class Stats extends Entity
{
        public var attack:Number;
        public var armour:Number;
        public var speed:Number;
        public var wisdom:Number;
        public var courage:Number;
        public var stamina:Number;

    public function Stats(ATK:Number=0, ARM:Number=0, SPD:Number=0, WIS:Number=0, CRG:Number=0, STM:Number=0)
    {
        attack  = ATK;
        armour  = ARM;
        speed   = SPD;
        wisdom  = WIS;
        stamina = STM;

    }
}

在此处找到所有这些答案:AS3 passing constructor parameters as variables in class