flex使用module加载swf,部分组件样式丢失(datefield RadioButton)
解决方法:
方案一.在Application主文件里面放入丢失样式的组件,并设置组件属性visible=false.
方案二.在flex编译属性配置文件(.actionScriptProperties)编译参数中加上-keep-all-type-selectors=true。如下配置:
<compiler additionalCompilerArguments="-services "x:/workspace/xxx/WebRoot/WEB-INF/flex/services-config.xml" -keep-all-type-selectors=true -allow-source-path-overlap=true -source-path=com/cist/gis/config -locale zh_CN" autoRSLOrdering="true" copyDependentFiles="true" flex3CompatMode="false" fteInMXComponents="false" generateAccessible="true" htmlExpressInstall="true" htmlGenerate="true" htmlHistoryManagement="true" htmlPlayerVersionCheck="true" includeNetmonSwc="false" outputFolderPath="WebRoot" removeUnusedRSL="true" rootURL="http://localhost:8080/xxx" sourceFolderPath="flex_src" strict="true" targetPlayerVersion="0.0.0" useApolloConfig="false" useDebugRSLSwfs="true" verifyDigests="true" warn="true">
4. 分模块下样式丢失的问题
(1) 可以在每次加载模块前设置该模块应用父模块相同的moduleFactor
this.moduleFactory=FlexGlobals.topLevelApplication.moduleFactory ;
(2) 可以在配置文件 actionScriptProperties里面添加
isolate-styles="false"
Turned out to be a simple solution. All styles except fonts were inherited to the modules.
mx|Module{
font-family : "Myriad Web";
}
Needs to be added when built using ant. Flash builder generated swf's were working fine with out this additional style definition. I had provided only
s|Application {
font-family: "Myriad Web";
font-size: 12;
font-anti-alias-type:advanced;
}
in the main style sheet.