Actionscript 3 Flex4:创建用于应用程序的CSS文件的问题
我使用一个文件来声明CSS样式:Actionscript 3 Flex4:创建用于应用程序的CSS文件的问题,actionscript-3,apache-flex,actionscript,flex4,Actionscript 3,Apache Flex,Actionscript,Flex4,我使用一个文件来声明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;
/* 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;
}
问题1:我在s | DropDownList的上面一行得到了以下警告:
未处理CSS类型选择器“spark.components.DropDownList”,因为该类型未在应用程序中使用。
但是它在应用程序中使用,在这里更改它的值确实会产生影响。知道我为什么会收到这个警告吗
问题2:当我在调试模式下运行应用程序时,我得到警告:
警告:为mx.core::UITextFormat指定了不兼容的嵌入式字体“arial_”。此组件要求使用embedAsCFF=false声明嵌入字体。
警告之所以出现,是因为我对上面的spark组件使用了global
属性,这导致它应用于所有组件,包括一些mx组件。这里感兴趣的组件是DataGrid单元格中的文本。我只需要弄清楚如何分别定义mx.core::UITextFormat的样式。你知道这个的语法是什么吗?我试过:
mx|UITextFormat {
font-family:arial_mx;
}
但它不起作用。不知道该怎么办 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,这就是我在此处链接的内容:
- (可选)
s|DataGrid {
font-family:arial_s;
fontLookup: embeddedCFF;
renderingMode: cff;
}
我也遇到过这种情况。我认为您可能需要在MX组件集中使用Flash文本引擎。您可以在编译器选项中执行此操作:
在Flash Builder中,进入项目属性>Flex编译器并选中“在MX组件中使用Flash文本引擎” 在我的例子中,以下设置修复了所有嵌入的字体问题:
global {
textFieldClass: ClassReference("mx.core.UIFTETextField");
}
谢谢Sunil,我尝试了上面的UITextField以及TextInput和其他一些,但没有任何变化。这里我没有使用库项目,但是数据网格在com.myviews中的一个mxml文件中,但是我尝试使用
view | DropDownList{…}
,它报告相同的警告。嗯,唯一想到的另一件事是尝试清理项目。抱歉,我帮不上忙:)我更新了我的答案,关于嵌入式字体问题,希望能有帮助。感谢Sunil,我假设我必须嵌入两次(一次用于spark,一次用于mx;请参见字体系列
名称不同),但也许有一种方法可以通过在CSS文件中使用样式名称或其他内容来实现这一点,然后引用该样式名来完成embeddedCSF和呈现模式等,所有这些都在CSS文件中。我宁愿在CSS文件中执行一次,而不是在整个应用程序中执行一次。可能在新版本的Flex中,他们可以使用spark全局和mx全局?