2011-01-25 17 views

答えて

1

これは重要ではありませんでした。まず、選択には複数の矩形が必要な場合があります。次に、それを行う便利な方法はありません。ここで

は私がしなければならなかったものです:

 var start:int = op.activePosition < op.anchorPosition ? op.activePosition : op.anchorPosition; 
     var end:int = op.activePosition > op.anchorPosition ? op.activePosition : op.anchorPosition; 

     var textFlow:TextFlow = this.textFlow; 
     var rectangles:Dictionary = new Dictionary(); 

     // For each selected character, make a box 
     for(var i:int=start; i < end; i++) { 

      var flowLine:TextFlowLine = textFlow.flowComposer.findLineAtPosition(i, true); 

      if(rectangles[ flowLine.absoluteStart ] == null) { 
       rectangles[ flowLine.absoluteStart ] = new Rectangle(); 
       (rectangles[ flowLine.absoluteStart ] as Rectangle).x = 0xffffff; 
       (rectangles[ flowLine.absoluteStart ] as Rectangle).right = 0; 
      } 
      var currentRect:Rectangle = rectangles[ flowLine.absoluteStart ]; 

      var textLine:TextLine = flowLine.getTextLine(true); 
      var atomIndex:int = textLine.getAtomIndexAtCharIndex(i); 
      if(atomIndex >= 0) { 
       var atomBounds:Rectangle = textLine.getAtomBounds(atomIndex); 

       var pt:Point = this.globalToLocal(textLine.localToGlobal(new Point(atomBounds.left, atomBounds.top)));      
       if(pt.x <= currentRect.left) { 
        currentRect.left = pt.x; 
        currentRect.top = pt.y; 
       } 

       pt = this.globalToLocal(textLine.localToGlobal(new Point(atomBounds.right, atomBounds.bottom))); 
       if(pt.x >= currentRect.right) { 
        currentRect.right = pt.x; 
        currentRect.bottom = pt.y; 
       }     
      } 
     } 
     return rectangles; 
0

私はこの見たドキュメントの周りのビットを見てから、このを完全に制御を取得するための些細な方法があります信じていない: http://opensource.adobe.com/wiki/display/flexsdk/Spark+Text+Primitives#SparkTextPrimitives-FTE

[スタイル(名前=「focusedTextSelectionColor」、タイプ=」 UINT」、形式= "色" は、継承= "YES")]

=

[スタイル(名称 "inactiveTextSelectionColor"、タイプ= "UINT"、フォーマットは= "色" は、継承= "YES")]

[スタイル(name = "unfocusedTextSelectionColor"、type = "uint"、format = "Color"、継承= "はい")]

注:

アンカー位置 - 矢印キーで選択範囲を拡張すると固定された選択範囲の終わりを指定する文字インデックス。

アクティブポジション - 矢印キーで選択範囲を拡張するときに移動する選択範囲の終わりを指定する文字インデックス。

これらはすべて唯一の色(またはインデックス)なので、あなたがしたいと思うすべての魅力を得るかどうかはわかりません。私はカスタムテキスト選択コントロールを扱うためにFlex 3の何かに取り組み、画面上にあるものと同じプロパティを持つTextFieldを配置した後、文字を1つずつダンプした「オフスクリーンバッファ」を使用して終了しました私が所望の幅に達するまで、キャラクターの中でコントロールがドロップされた場所(アンドロイドのようなもの)を把握することができました。

私はあなたが持っているSDKの上記のスタイルを検索することをお勧めします(特にRichEditableTextとそのスーパークラスでは、これを行うでしょうが、そこにかなりのバージョンがあり、とFTEの両方が少し流動しているように見えます)。これらのスタイルが使用されている場所を見つけたら、おそらく選択インジケータの描画コードの近くにあり、適切なメソッドをオーバーライドするためにどのクラスから拡張する必要があるでしょう。

申し訳ありませんが、私はあなたにまっすぐな答えを与えることはできませんが、うまくいけば、これは役立ちますか、簡単な方法があれば他の誰かがチャイムインすることができます。

shaun

関連する問題