2009-03-30 2 views

Antwort

0

Je nach Ihren genauen Bedürfnissen können Sie in der Lage sein Label zu Unterklasse, überschreibt die update, und nur eine Linie durch die Mitte des Textes zu ziehen.

3

brauchte ich die gleichen, und am Ende der mediagreenhouse Lösung vereinfacht etwas:

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); 
     } 
    } 
} 
} 
+0

Dies funktioniert gut, bis der Text mehrzeiligen ist, dann ist es nur strikesthrough die obersten Zeile. – invertedSpear

+0

Ich reparierte es mit dieser Kopie alles unten und formatiere es und Sie werden sehen, was ich tue: 'Kopieren unter diesem ' var nLines: uint = super.mx_internal :: getTextField(). NumLines; var yPos: int = 0; für (var i: int = 0; i invertedSpear

Verwandte Themen