Actionscript 3:如何创建动态导入语句?

时间:2014-05-13 19:20:50

标签: actionscript-3 flash

我有一个文件结构,指定武器类型[" 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]
    }

}

}

提前致谢。

2 个答案:

答案 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写的那样,最好的办法就是拥有工厂。