我使用文件声明CSS样式:
/* CSS file */
@namespace s "library://ns.adobe.com/flex/spark";
@namespace mx "library://ns.adobe.com/flex/mx";
@namespace view "com.myviews.*";
@namespace comp "com.myviews.mycomponents.*";
@font-face {
font-family:arial_s;
src:url("Fonts/Arial.ttf");
embed-as-cff:true;
font-weight:normal;
font-style:normal
}
@font-face {
font-family:arial_mx;
src:url("Fonts/Arial.ttf");
embed-as-cff:false;
font-style:normal;
font-weight:normal;
}
global {
font-family:arial_s; font-size:12.5;
}
s|DropDownList {
cornerRadius:0;
}
Q1:我在上面的行中收到了s | DropDownList:
的警告 The CSS type selector 'spark.components.DropDownList' was not processed, because the type was not used in the application.
但它在应用程序中使用,并且在此处更改其值会产生影响。知道为什么我会收到这个警告吗?
Q2:当我在调试模式下运行应用程序时,我收到警告:
warning: incompatible embedded font 'arial_s' specified for mx.core::UITextFormat. This component requires that the embedded font be declared with embedAsCFF=false.
警告即将发生,因为我已将global
属性用于上面的spark组件,这会导致它应用于所有组件,包括一些mx组件。这里感兴趣的组件是DataGrid单元格中的文本。我只需要弄清楚如何单独定义mx.core :: UITextFormat的样式。知道这个语法是什么意思吗?我试过了:
mx|UITextFormat {
font-family:arial_mx;
}
但它不起作用。不知道该怎么办。 http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/core/UITextFormat.html
答案 0 :(得分:2)
UITextFormat的文档不包含任何CSS样式。
这只是一个预感,但由于UITextFormat实际上只是一种应用于UITextField的格式,您可以将字体样式应用于UITextField对象:
mx|UITextField {
font-family:arial_mx;
}
关于DropDownList的第一个问题,DownDownList是否可能在库项目中,而不是实际上在应用程序项目中?如果是这样,您可以为库项目创建defaults.css。
<强> [编辑] 强>
字体问题困扰着我:)我看了一下DefaultGridItemRenderer:它扩展了UITextField。因此,要使用嵌入字体,必须将其embedFonts
属性设置为true。然后它还需要一个引用嵌入字体的UITextFormat对象。
您可以扩展DefaultGridItemRenderer来执行此操作,但我认为Adobe可能会使这更容易,并查看以下DataGrid样式。对于非移动应用,DataGrid文档会指向ITextLayoutFormat,这是我在此处链接的内容:
我想知道嵌入字体是否实际在DataGrid中使用,因为看起来默认渲染器不会使用它们(除非DataGrid指示它)。
事实上,你的css是将字体嵌入两次(?)而且我认为你应该只需要这样做一次 - 通过在DataGrid上适当地设置样式:
s|DataGrid {
font-family:arial_s;
fontLookup: embeddedCFF;
renderingMode: cff;
}
答案 1 :(得分:0)
我也遇到过这种情况。我想您可能需要在MX组件集中使用Flash文本引擎。您可以在编译器选项中执行此操作:
在Flash Builder中,转到项目属性&gt; Flex编译器并检查&#34;在MX组件中使用Flash文本引擎&#34;。
答案 2 :(得分:0)
在我的情况下,以下设置修复了所有嵌入字体问题:
“在MX组件中使用Flash文本引擎”选中“项目属性&gt; Flex编译器”
在styles.css中添加以下行:
global {
textFieldClass: ClassReference("mx.core.UIFTETextField");
}