Apache flex 在actionscript中动态创建类

Apache flex 在actionscript中动态创建类,apache-flex,actionscript-3,embedded-resource,dynamic-class,Apache Flex,Actionscript 3,Embedded Resource,Dynamic Class,让我先提出这个问题。 我需要加载我在我的项目中使用的所有图像外部没有嵌入。 图像以皮肤或树中项目的图标的形式出现。 我偶然遇到了一个“偶像”班 我能够修改它,并将其用于树,但问题是我们不能使用同一组件的图标章动性来设置两种不同的皮肤,就像按钮式皮肤一样。 我想不出一个解决办法来解决这个问题。 是否可以模拟嵌入并动态创建一个类,并在运行时返回该类?正是我想要的。。。不幸的是,作者声称他无法将其用于按钮外观实现这些功能最简单的方法是创建一个/多个包含资产的SWF,加载它,然后从那里(即从加载的SWF

让我先提出这个问题。 我需要加载我在我的项目中使用的所有图像外部没有嵌入。 图像以皮肤或树中项目的图标的形式出现。 我偶然遇到了一个“偶像”班 我能够修改它,并将其用于树,但问题是我们不能使用同一组件的图标章动性来设置两种不同的皮肤,就像按钮式皮肤一样。 我想不出一个解决办法来解决这个问题。
是否可以模拟嵌入并动态创建一个类,并在运行时返回该类?

正是我想要的。。。不幸的是,作者声称他无法将其用于按钮外观

实现这些功能最简单的方法是创建一个/多个包含资产的SWF,加载它,然后从那里(即从加载的SWF应用程序域)拉出类

有多种解决方案:

硬核版本是使用URLLoader将这些图像加载到ByteArray中,然后创建一个新的ByteArray,这将是一个swf文件,包含嵌入的资产和将它们与类链接的必要指令。。。你可能想看看spark的。。。 由于您只需执行一次,所以更简单、更高效的方法是在服务器上执行。。。给你 只需使用 使用swfmill 使用一些库来处理swf,如 自己动手做…: 希望有帮助

编辑:第二个解决方案是使用合适的工具在服务器上创建资产。。。或者自己编写工具,但这更像是一个笑话。。。我意识到,flex编译器的链接是错误的。。。想法是简单地将它插入您的web服务器,然后让它编译一些ActionScript,这将完成嵌入。。。因此,您将生成一个ActionScript文件,如下所示:

package {
    import flash.display.Sprite;
    import flash.utils.describeType;
    public class Assets extends Sprite {
        [Embed(source='asset_1_Location')]
        public static var asset_1:Class;
        [Embed(source='asset_2_Location')]
        public static var asset_2:Class;
        ...
        [Embed(source='asset_n_Location')]
        public static var asset_n:Class;    
        public function Assets() { }
        public static function getAll():Object {
            var ret:Object = { };
            for each (var x:XML in describeType(Assets).variable.(@type=="Class")) {
                var name:String =  x.@name;
                ret[name] = Assets[name];
            }
            return ret;
        }
    }
}
然后让flex编译器编译它。。。加载时,使用LoaderInfo::applicationDomain.getDefinitionAssets.getAll提取数据,这将为您提供一个包含所有所需类的键值映射

如果使用其他工具,它的工作方式会有所不同,但我希望这能澄清,它应该如何工作

在服务器上,您需要一个服务,它将为您构建这些资产主权财富基金,并缓存它们。。。因此,您发送一些POST请求,例如使用您需要的文件/图像的JSON数组,它将返回swf。。。当然,服务器应该进行适当的缓存

希望,现在有帮助了…:

格里茨


back2dos

感谢您的反馈。第一个解决方案非常核心,我无法理解第二个解决方案。你能详细解释一下吗?