我有一个文件结构,指定武器类型[" Ax"," Mace"," Staff",Sword"],我想要从该文件夹中导入特定的.as文件,具体取决于变量(组)的值。
我想做的是这样的: 武器。[小组]。结构(显然不是那个;那不起作用)
例如,如果Group =" Ax&#34 ;; 我想导入Weapon.Axe.Enchantments。
但是如果Group =" Mace&#34 ;; 我想导入Weapon.Mace.Enchantments。
AS3可以实现这一点,而无需创建一堆if语句或交换机,并相应地处理它们吗?
package Weapons {
public class Weapon {
import Math.random;
import Math.floor;
import Weapons.*;
public var groups:Array = ["Axe","Mace","Staff","Sword"];
public var Group:String;
public var Quality:Object;
public var Enchantment:Object;
public var Material:Object;
public var Type:Object;
public var Profession:Object;
public function Weapon() {
// constructor code
Group = Math.floor(Math.random*groups.length);
var i:Number;
Enchantment = Weapons.[Group].Enchantments[i]
}
}
}
提前致谢。
答案 0 :(得分:4)
import关键字仅用于编译项目,不能在运行时使用导入。您可以在运行时使用ApplicationDomain动态地实例化您的类。
var myClass:Class = ApplicationDomain.currentDomaint.getClassDefinition("com.package.YourClass");
var myWeapon:Weapon = new myClass() as Weapon;
但我不认为你真的需要那个。通常是" Ax"," Mace"," Staff"," Sword"类应该扩展Weapon类。您可以使用工厂设计模式来获取带有字符串的正确类。
http://en.wikipedia.org/wiki/Factory_%28object-oriented_programming%29
答案 1 :(得分:0)
实现所需效果的最简单方法是使用类数组,而不是字符串。 正如Nambew写的那样,最好的办法就是拥有工厂。