2009-11-03 41 views
3

无论如何,我可以有效地称为equiv。 Flex图形对象上的setText的设置?我可以在Flex图形对象上设置文本吗?

具体而言,我正在使用自定义单元格渲染器来显示数据网格中的数据。渲染器使用Graphics对象根据底层数据设置单元的一部分(比如左半部分)的背景颜色。我希望能够仅在具有背景颜色的单元格部分(例如,居中在左半部分)中显示文本。我知道所有的宽度(单元本身和图形对象),但我不知道如何在图形对象上设置文本(居中)。

任何人有任何想法请问? Tks vm

回答

1

简短的回答是,您不能用Graphics对象以编程方式绘制文本。你需要做的是创建一个文本类的类(例如标签,文本等),并在你的单元格渲染器中正确定位。

假设你做你的风俗画在updateDisplayList,你会想要做类似如下:

override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void 
{ 
    super.updateDisplayList(unscaledWidth, unscaledHeight); 

    // perform all your custom painting 

    var label:Label = new Label(); 
    label.text = "Some text"; 

    label.width = widthOfCustomPainting; 
    // can also set x- and y-coordinates of label too 

    label.setStyle("textAlign", "center"); 

    this.addChild(label); 
} 

这将需要根据您的项目渲染器是如何设置的一些调整,但它应该几乎是你所需要的。

请注意,我上面的代码是而不是使用自定义项目渲染器的最佳做法。值得看看this excellent blog post,它描述了如何正确地创建项目渲染器。

+1

另外,如果你想发疯,的UITextField是_more native_文本元素(或文本字段)。无论如何,您实际上可以设置背景颜色,因此它也可以作为此问题的阴影部分。 – Glenn 2009-11-03 19:56:45

+0

好点,格伦!您可以使用具有指定宽度和背景颜色的文本字段,甚至不必担心自定义绘画。 – Dan 2009-11-04 14:03:26

+0

奇妙 - 非常感谢它的工作。它可能不是最优雅的解决方案,但现在对我来说很好。 我真的不得不给我的标签一个名称,并检查,看看如果这个名字的孩子已经添加到'这个'...所以... if(this.getChildByName(tmpLabel.name)== null){ 这个。的addChild(tmpLabel); } 我认为这是因为渲染过程(也许你的博客里有什么我会读!)。 再次。 – AlexC 2009-11-04 14:39:01

0

多边形实验室提出了一种将字体转换为矢量曲线的解决方案,以便您可以将文本绘制为图形。 See it here。该代码尚未发布,但您可以在评论中看到一些类似的项目。

但是,您需要在AS中代替MXML来完成它,或者您为此编写自己的类。

4

下面是避免加入UI组件中的溶液:

private function WriteText(text:String, rect:Rectangle):void 
    { 
     var uit:UITextField = new UITextField(); 
     uit.text = text; 
     uit.width = rect.width; 
     var textBitmapData:BitmapData = ImageSnapshot.captureBitmapData(uit); 
     var matrix:Matrix = new Matrix(); 
     var x:int = rect.x; 
     var y:int = rect.y; 
     matrix.tx = x; 
     matrix.ty = y; 
     graphics.beginBitmapFill(textBitmapData,matrix,false); 
     graphics.drawRect(x,y,uit.measuredWidth,uit.measuredHeight); 
     graphics.endFill(); 
    } 

的想法是使用的UITextField创建位图,可以与图形被用于对象填充矩形。

这是基于Adobe Developer Connection的Olga Korokhina的blog post

+0

这种方法也适用于手机吗? – ina 2011-12-15 14:57:49

+0

这是一个不错的诀窍,但你会失去字体反锯齿与此。 – splash 2016-07-26 12:08:14

0

使用的TextFormat为UIT的defaulttextformat是我的问题的解决方案......

相关问题