0

我正在使用动作脚本 3 制作游戏。在其中,我有一个角色类,玩家和敌人类将从该类派生。我这样做是为了除非我需要提供特定的 AI 或花哨的行为(例如针对老板),否则我可以在库中为每个敌人制作一个新剪辑,而无需制作动作脚本文件。

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

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

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

4

2 回答 2

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
于 2012-04-14T22:09:46.037 回答
0

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

演员 - 基类

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");
        }
    }
}
于 2012-04-14T22:17:39.493 回答