【发布时间】:2011-07-04 07:53:41
【问题描述】:
有没有办法获取当前应用程序中所有皮肤类的列表?我正在使用 Flex 4.5.1。
这是我现在用来获取所有皮肤的循环,
for each (var item:Object in styleManager.typeHierarchyCache) {
for (label in item) {
if (label=="spark.components.supportClasses.Skin" ||
label=="spark.skins.mobile.supportClasses.MobileSkin") {
for (label in item) {
name = label.substr(label.lastIndexOf(".")+1);
vo = new SkinObject();
vo.name = name;
vo.qualifiedName = label;
dictionary[label] = vo;
}
break;
}
}
}
for each (item in dictionary) {
array.push(item);
}
为什么的原因是因为我想列出应用程序中的所有皮肤,然后能够实时应用它们,这样我就可以看到它们的样子。 * 我有这个工作,但我希望有更好的方法。
【问题讨论】:
-
您是指在 FlashBuilder 中还是在一般情况下?
-
使用AS3;我不知道如何将所有类编译成最终的 SWF。即使你可以;您将如何定义皮肤类和非皮肤类之间的区别。 W/ 4.5.1 支持 ActionScript 皮肤;您不能 100% 依赖 SparkSkin 类作为所有皮肤的父级。为什么要这样做?
-
@flextras - 我也不知道。好吧,styleManager 包含 typeHierarchyCache 中的类型列表。该列表中列出了 ui 组件和皮肤。我可以通过检查基类来过滤列表以获取皮肤。我将在操作中发布一个代码 sn-p。
-
如果编译成 swc,会生成一个 catalog.xml 文件,其中包含项目中的所有文件名。您可以选择解析该文件吗?
-
@RIAStar - 里面没有任何特定于皮肤的东西
标签: apache-flex flex4 skinning flex-spark