たとえば、テキストエリア(TextArea)などを入力しているときに、今から入力しようとする文字の候補などを表示したい場合があるのではないだろうか?
コードを書いていれば、よく使うあれだ。

これをFlexなどのTextAreaでも使いたい。こんな感じだ。
codeHelp

さて、そのためには、現在のキャレットの位置、つまり、文字の何番目という位置情報から、
その位置が、x座標、y座標でどこにあたるのかを求める必要がある。

このためには、TextFieldの

getCharBoundaries(charIndex:int):Rectangle

を使用する。

これを使って、x,y座標を求めて、そこにListのPopupを表示すればOKというわけだ。

ただ、TextAreaなどで使用したい場合には、内部で使っているTextFieldを触るすべがない。
したがって、継承クラスなどを作って、

textField

のプロパティ(getter)としてアクセスすることになる。

お仕事のご依頼・相談を承ります
この記事に関連するお仕事のご依頼やご相談をお待ちしております。 詳しくは、こちら

2 Responses to “flex: テキストの文字位置から座標位置を調べる”

  • mopry より:

    こんにちは~mopryと言います。
    テキストの文字位置から座標位置を調べる方法なのですが
    flex3.6の環境でgetCharBoundaries(charIndex:int):Rectangleを利用してみたのですが、
    どうもうまく位置が取れませんでした。
    宜しければ、詳しくとり方を詳しく教えたいただけないでしょうか?

  • coltware より:

    コメントありがとうございます。

    あまりに昔で自分でもこれでいつでもどこまでうまくいくのですか?
    ときかれても自信がありません。

    具体的にどのように位置がとれないのでしょうか?

    値がないのでしょうか?
    それとも、明らかに間違った値が返ってくるのでしょうか?

    私は
    text.getCharBoundaries(text.charetIndex()-1)
    のようにするとそれっぽい値がとれていますが・・・・
    Flex 3.5で確認。

    ちなみに、
    textはFlexのTextareaの継承クラスで、
    public class TextArea2 extends TextArea
    {
    public function TextArea2()
    {
    super();
    }

    public function charetIndex():int{
    return this.textField.caretIndex;
    }

    public function getCharBoundaries(pos:int):Rectangle{
    return this.textField.getCharBoundaries(pos);
    }
    }

    のような感じです。

Leave a Reply

お仕事のご依頼・相談
この記事に関連するお仕事のご依頼やご相談をお待ちしております。 詳しくは、こちら
ソフトウェア&ライブラリ




ライブラリ
airxmail(en)
AIR版メール送受信ライブラリ
airxzip
AIR版ZIP圧縮・解凍ライブラリ
執筆書籍
本、雑誌等

WEB記事:CodeZine
執筆記事はこちら
カレンダー
2010年3月
« 2月   4月 »
1234567
891011121314
15161718192021
22232425262728
293031  

カスタム検索
RSS
Add to Google < !–adsense–>
アーカイブ
カテゴリ
にほんブログ村 IT技術ブログへ