2010-12-31 4 views

答えて

0

最も簡単な方法は、テキストを取るとする正規表現のシーケンスを使用することで一致した時はいつでもにInlineGraphicElementを作成したい

  • HTMLを埋め込みます。その後、HTMLからTextFlowを作成し、それをRichEditableText(または使用しているコンポーネント)に割り当てます。ような何か:また、手動で電子メール/スマイルマークの文字列を解析してのSpanElement、のLinkElementを構築することにより、文字列に基づいてのTextFlowを構築することができ

    private function emailClickedHandler(event:FlowElementMouseEvent):void { 
        var emailAddress:String = LinkElement(event.flowElement).getFirstLeaf().text; 
        // do something with emailAddress 
    } 
    

    var emailRE:RegExp = /^[a-zA-Z0-9._%+-][email protected][a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/; 
    var smileyRE:RegExp = /:\)/g; 
    var sample:String = "Email [email protected] with smiley :) example."; 
    
    var result:String = ''; 
    while (emailRE.test(sample)) { 
        result = sample.replace(emailRE, "<a href='event:emailClicked'><font color='0x0000DD'>$&</font></a>"); 
    } 
    if (result.length > 0) { 
        sample = result; 
    } 
    
    var result2:String = ''; 
    while (smileyRE.test(sample)) { 
        result2 = sample.replace(smileyRE, "<img src='smiley.png'/>"); 
    } 
    if (result2.length > 0) { 
        sample = result2; 
    } 
    
    richEditableTextComponent.textFlow = TextConverter.importToFlow(sample, TextConverter.TEXT_FIELD_HTML_FORMAT); 
    richEditableTextComponent.textFlow.addEventListener("emailClicked", emailClickedHandler, false, 0, true); 
    

    次にクリックハンドラのようなものになるだろう、InlineGraphicElementなどがありますが、これはプログラマーにとっては面倒ですが、特にRichEditableTextを使用する必要があります。スマイリーが一致しているかどうかを確認するために、ユーザーがキーを入力してグラフィックを置き換えるためにSpanElementを解析する必要があります。ここではHTMLは役に立たないでしょう。なぜなら、あなたがTextFlowオブジェクト全体を再割り当てしたくないからです。 1つのSpanElementが一連のSpanElement - InlineGraphicElement - SpanElementに分割されるなど、更新する必要があるものだけを更新するのではなく、フロー全体を完全に再描画することになります。

    希望すると便利です。

    ジャスティン

  • 関連する問題