Actionscript 3 在flex 3中,如何在标签或文本中使用删除线?

Actionscript 3 在flex 3中,如何在标签或文本中使用删除线?,actionscript-3,apache-flex,flex3,Actionscript 3,Apache Flex,Flex3,在flex 3中,如何在标签或文本中使用删除线 您可以从()使用 根据您的具体需要,您可能可以对label进行子类化,覆盖updateDisplayList,并在文本中间画一条线。这里的Flex 3示例:我也需要同样的方法,并在某种程度上简化了MediaGreenouse解决方案: package { import flash.text.TextLineMetrics; import mx.core.mx_internal; import mx.controls.Labe

在flex 3中,如何在标签或文本中使用删除线

您可以从()使用


根据您的具体需要,您可能可以对label进行子类化,覆盖updateDisplayList,并在文本中间画一条线。

这里的Flex 3示例:

我也需要同样的方法,并在某种程度上简化了MediaGreenouse解决方案:

package
{
    import flash.text.TextLineMetrics;
    import mx.core.mx_internal;
    import mx.controls.Label;

use namespace mx_internal;

public class StrikeLabel extends Label
{

    public function StrikeLabel()
    {
        super();
    }

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

        if( textField )
        {
            var metrics : TextLineMetrics = textField.getLineMetrics( 0 );
            var y : int = ( metrics.ascent * 0.66 ) + 2;

            graphics.clear();
            graphics.lineStyle( 1, getStyle( "color" ), 1 );
            graphics.moveTo( 0, y );
            graphics.lineTo( metrics.width, y );
        }
    }
}
}

这非常有效,直到文本是多行的,然后它只穿过顶行。我用这个副本修复了它下面的所有内容并格式化了它,你会看到我在做什么:
copy低于这个
var nLines:uint=super.mx_internal::getTextField().numLines;var-yPos:int=0;对于(变量i:int=0;i