如何为以编程方式绘制的TextField使用预定义的CSS样式?

时间:2009-01-16 21:42:16

标签: css flex

我有一个将文本呈现给BitmapData的图形应用程序 - 现在它使用特定字体进行硬编码,这对于测试来说很好,但对于生产我真的需要它才能成为样式。

应用程序的其余部分使用特定字体,我希望能够只使用样式名称(字体样式)创建一个TextFormat对象,以传递给嵌入TextField对象的文本sprite。

现在这里是顺序,粗略地说:

        var format:TextFormat = new TextFormat();
        format.font = "Arial";
        format.color = 0xFF0000;
        format.size = 12;
        // tf is a previously instantiated TextField()
        tf.defaultTextFormat = format;
        tf.autoSize = TextFieldAutoSize.LEFT;

        tf.text = _text;

然后,它只是简单地绘制:

        bmpData.fillRect(srcRect,0x00000000);
        bmpData.draw(tf);

现在这很讨厌,那么如何从我的应用程序css定义中获取StyleSheet或TextFormat?我看过StyleManager,CSSStyleDeclaration,似乎没什么比较合适的。这里的序列是什么,有人吗?

2 个答案:

答案 0 :(得分:1)

基本上,您只需将[style]元数据标记添加到自定义类即可定义自定义样式属性,在css中指定这些属性的值,并在代码中使用getStyle("myCustomStylePropertyName")来获取值集在css。

有关详细信息,请参阅Flex 3 help: Example: Creating style properties

答案 1 :(得分:1)

你可以尝试类似下面的内容

如果你在CSS文件中设置了一些名为TextFormat的东西。

var css:CSSStyleDeclaration = StyleManager.getStyleDeclaration("TextFormat")
yourComponent.setStyle("textAlign", getStyle("headerTextAlign"));
yourComponent.setStyle("fontFamily", getStyle("fontFamily"));

这应该做你想要的。