我正在创建两个定义对象一般结构的类,以及许多作为父类变体的子类。变量在超类中具有类型声明,在子类中具有值声明。然而:
[Body_Part_Armor.as]
package {
import flash.display.*;
public class Body_Part_Armor extends MovieClip
{
var agility_malus;
var hp_total;
var defense;
var armor_extra_height;
var armor_extra_width;
var hp_left;
public function Body_Part_Armor()
{
hp_left = hp_total;
}
}
}
[Chest_Armor_1.as]
package
{
public class Chest_Armor_1 extends Body_Part_Armor
{
agility_malus = 2;
hp_total = 20;
defense = 7;
armor_extra_height = 10;
armor_extra_width = 6;
public function Chest_Armor_1()
{
}
}
}
对于编译器调试测试 Body_Part_Armor 和 Chest_Armor_1 完全没问题,而
[武器.as]
package
{
import flash.display.*;
public class Weapon extends MovieClip {
var weapon_type:Number;
var n_attacks:Number;
var damage:Number;
var precision:Number;
// some other variables in here
var is_empty_weapon:Boolean;
public function Weapon()
{
}
}
}
[Empty_Arm_Weapon.as]
package
{
public class Empty_Arm_Weapon extends Weapon
{
is_empty_weapon = true;
public function Empty_Arm_Weapon() {
}
}
}
给我以下错误:1120:访问未定义的属性 is_empty_weapon(但如果我写 var is_empty_weapon = true; 在 Empty_Arm_Weapon 中,它会抱怨与命名空间 public 中变量的继承定义发生冲突)。
但是,如果我在构造函数 Empty_Arm_Weapon() 中定义变量值 is_empty_weapon = true,则不会出现任何错误。
我想我错过了一些非常明显的东西,但我无法区分这两种情况,但一种有效,另一种无效。你能帮助我吗?谢谢!