Actionscript 3 在flex 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
根据您的具体需要,您可能可以对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