当前位置:  开发笔记 > 编程语言 > 正文

如何为自定义Flex组件定义默认样式?

如何解决《如何为自定义Flex组件定义默认样式?》经验,为你挑选了3个好方法。

我正在创建一个新的Flex组件(Flex 3).我希望它有一个默认样式.是否有命名约定或我的.cs文件的某些内容使其成为默认样式?我错过了什么吗?



1> Yarin..:

Christian对于应用CSS是正确的,但如果您计划在项目库中使用组件,那么您将要为该库编写默认的css文件.这是你如何做到的:

    创建一个名为"defaults.css"的css文件(只有这个文件名可以使用!)并将它放在库的"src"文件夹下的顶层.如果css文件引用任何资产,它们也必须在"src"下.

    (重要!)转到库项目的属性> Flex库构建路径>资产,并包含css文件和所有资产.

这就是Adobe团队设置所有默认样式的方式,现在您也可以这样做.刚想出来这个巨大的



2> Christian Nu..:

通常有两种方式.一个是直接引用类名 - 例如,如果您MyComponent在ActionScript中创建了一个新的组件类,或者通过使MXML组件扩展另一个调用的UIComponent来间接MyComponent,则在这两种情况下,组件都会获取声明的样式在外部样式表中,只要样式表已导入到您的应用程序中(例如,通过Style source):

MyComponent
{
     backgroundColor: #FFFFFF;
}

另一种方法是设置UIComponent的styleName属性(作为字符串):

public class MyComponent
{
     // ...

     this.styleName = "myStyle";

     // ...
}

...并在CSS文件中定义样式,如下所示(注意点符号):

.myStyle
{
     backgroundColor: #FFFFFF;
}

合理?


我浪费了很多时间来完成这一切,所以对于任何寻求额外帮助的人来说:这是一个很好的答案,这是有效的,但另外一个很好的参考,请查看下面Yarin的答案.当你按照Yarin的回答时,确保CSS文件名实际上被称为"defaults.css"即使你可以在项目中包含任何css文件,也不会有其他名称.哎呀.

3> Josh Tynjala..:

除了Christian Nunciato所建议的,另一个选择是为Flex组件的样式定义一个静态初始化器.这允许您设置默认样式,而无需开发人员包含CSS文件.

private static function initializeStyles():void
{
    var styles:CSSStyleDeclaration = StyleManager.getStyleDeclaration("ExampleComponent");
    if(!styles)
    {
        styles = new CSSStyleDeclaration();
    }

    styles.defaultFactory = function():void
    {
        this.exampleNumericStyle = 4;
        this.exampleStringStyle = "word to your mother";
        this.exampleClassStyle = DefaultItemRenderer //make sure to import it!
    }

    StyleManager.setStyleDeclaration("ExampleComponent", styles, false);
}
//call the static function immediately after the declaration
initializeStyles();

推荐阅读
linjiabin43
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有