让我先说明问题。 我需要在没有嵌入的情况下从外部加载我在项目中使用的所有图像。 图像存在于皮肤中或作为树中项目的图标。 我遇到了IconUtility类here 我能够修改它并将它用于树,但问题是我们不能使用相同组件的象兼容性来设置2个不同的皮肤(比如按钮 - upskin downkin)。 我无法想到具有象似性的解决方法。 是否可以模拟嵌入并动态创建类并在运行时返回类?
答案 0 :(得分:0)
This正是我所寻找的...不幸的是,作者声称他无法将其用于按钮皮肤
答案 1 :(得分:0)
完成这些操作最简单的方法是创建一个/多个包含资产的swfs,加载它,然后从那里提取类(即从加载的swfs应用程序域中)...
有多种解决方案:
ByteArray
,然后创建一个新的ByteArray
,它将是一个swf文件,包含嵌入的资源和链接它们的必要说明和班级......你可能想看看spark swfassist ...... 希望有所帮助
编辑第二个解决方案是关于在服务器上创建资产,使用合适的工具......或者自己编写工具,但这更像是一个笑话...... :) ..我意识到,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.getDefinition(“Assets”)。getAll()提取数据,它将为您提供包含所需所有类的键值映射。 ..
使用其他工具,它的工作方式会有所不同,但我希望这可以澄清它应该如何运作......
在服务器上,你需要一个服务,为你构建这些资产swfs,并缓存它们......所以你发送一些POST请求,例如你需要的JSON数组文件/图像,以及它我会给你回swf ...当然服务器应该做适当的缓存......
希望,现在它有助于......:)
格尔茨
back2dos