men*_*nge 4 apache-flex skinning
我们尝试开发具有多个抽象层的Flash游戏引擎.此flex项目包含:
应用程序(1) - >加载类(2) - >加载另一个实现Flex组件(4)的类(3).
加载使用SWFLoader.最后一个Flex组件(4)只是一个具有AdvancedDataGrid的组.我们没有定义皮肤所以我认为它必须采用默认皮肤.
问题是在执行期间会抛出错误,因为在Flex组件中找不到组件的默认外观(4).在我们的例子中,对于AdvancedDataGrid:
Error #1007: Instantiation attempted on a non-constructor.
Run Code Online (Sandbox Code Playgroud)
在mx.controls::AdvancedDataGridBaseEx
.
guilty命令是:getStyle("headerSeparatorSkin");
返回null
目前,我们找到了两个解决方案:
第一个解决方案是将属性添加headerSeparatorSkin="spark.skins.SparkSkin"
到Flex组件的AdvancedDataGrid中(4).但这意味着我必须为组件的每个部分手动添加每个皮肤,这是一个非常无聊的解决方案.
第二个解决方案是在第一个Application(1)中创建一个AdvancedDataGrid.我想它将AdvancedDataGrid添加到编译和链接过程中.但是,这个解决方案并不好,因为Application(1)必须知道Flex组件(4)使用了哪些UIComponents.
我们尝试了编译器选项"keep-all-type-selectors = true"(就像这样)但没有改变.
那么,有人有一个解决方案来强制编译器在子应用程序中显式链接Flex组件和他的皮肤吗?
根据Flexmaniak.pl,它可以通过添加-keep-all-styles-selectors
到flex编译器参数来解决.
Flex 4.5.1的正确语法是 -keep-all-type-selectors
归档时间: |
|
查看次数: |
2453 次 |
最近记录: |