ActionScript3:从父级继承构造函数参数

时间:2012-04-14 16:36:12

标签: actionscript-3 flash-cs5

我正在制作一个游戏动作脚本3.在其中,我有一个演员类,玩家和敌人类将从中派生出来。我这样做是为了除非我需要提供特定的AI或花哨的行为(比如老板),否则我可以在库中为每个敌人创建一个新的剪辑,而不需要制作动作文件。

但是,我遇到了一个问题。

每当我尝试将参数传递给敌人的构造时(使其生成更健康),我得到错误1136(参数数量不正确。)

这是因为在运行时自动创建的构造函数与其父类没有相同的参数。有没有办法解决这个问题,而没有创建一个类文件,我为每个数百个敌人复制和粘贴父构造函数?

2 个答案:

答案 0 :(得分:1)

修改 实际上重读你的问题我认为你可能正在寻找super();

实施例

public class Actor{
 private var myHelth:uint;
     public function Actor(helth:uint = 100){
         myHelth = helth; //this will be set to 100 if nothing it passed in or the value passed
    }
}

扩展Actor的类:

public class Boss extends Actor{
     public function Boss(){
          super(200); //passes 200 to Actor;
     }
}

如果您尝试将数据传递给类构造函数,则需要确保它接受参数。

public class Actor{
     private var myHelth:uint;
     public function Actor(helth:uint = 100){
         myHelth = helth; //this will be set to 100 if nothing it passed in or the value passed
     }
}

然后使用

 var a:Actor = new Actor(200); //setting health to 200

 var b:Actor = new Actor(); //using the default of 100

答案 1 :(得分:0)

确保Flash Pro中的符号具有适当的AS链接,然后在超级语句中使用pass构造函数参数:

演员 - 基类

package
{

    public class Actor
    {
        public function Actor(name:String, role:String)
        {
        }
    }
}

Player - 继承自Actor定义自己的构造函数参数:

package
{

    public final class Player extends Actor
    {
        public function Player(... params:Array)
        {
            // pass desired inherited constructor parameters
            super("name", "role");
        }
    }
}

Enemy - 从Actor继承定义自己的构造函数参数:

package
{

    public final class Enemy extends Actor
    {
        public function Enemy(... params:Array)
        {
            // pass desired inherited constructor parameters
            super("name", "role");
        }
    }
}