我正在制作一个游戏动作脚本3.在其中,我有一个演员类,玩家和敌人类将从中派生出来。我这样做是为了除非我需要提供特定的AI或花哨的行为(比如老板),否则我可以在库中为每个敌人创建一个新的剪辑,而不需要制作动作文件。
但是,我遇到了一个问题。
每当我尝试将参数传递给敌人的构造时(使其生成更健康),我得到错误1136(参数数量不正确。)
这是因为在运行时自动创建的构造函数与其父类没有相同的参数。有没有办法解决这个问题,而没有创建一个类文件,我为每个数百个敌人复制和粘贴父构造函数?
答案 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");
}
}
}