わかりました...これまでのところ、クリックされたときに URL の自動エスケープをオフにする方法が見つかりませんでした。しかし、代わりに回避策を見つけました。
基本的に、TextFlow 内のすべてのリンク要素にカスタム クリック ハンドラーを追加し、クリックされたときに (組み込みの TLF 動作ではなく) リンクを手動で開きます。このような:
public function addLinkHandler( textFlowOrGroupElement: FlowGroupElement ): void
{
// scan the flow elements
for ( var f1: int = 0; f1 < textFlowOrGroupElement.numChildren; f1 ++ ) {
// found element
var curFlowGroupElement: FlowElement = textFlowOrGroupElement.getChildAt( f1 );
// if this is the link element, add the click event listener
if ( curFlowGroupElement is LinkElement ) {
( curFlowGroupElement as LinkElement ).addEventListener( FlowElementMouseEvent.CLICK, onLinkClick );
}
// if this is another flow group
else if ( curFlowGroupElement is FlowGroupElement ) {
// scan this group in turn, recursively
addLinkHandler( curFlowGroupElement as FlowGroupElement );
}
}
}
リンクのクリックハンドラは次のとおりです。
public function onLinkClick( e: FlowElementMouseEvent ): void
{
e.stopImmediatePropagation();
e.preventDefault();
var linkElement: LinkElement = e.flowElement as LinkElement;
navigateToURL( new URLRequest( linkElement.href ), '_blank' );
}
最終的に、TextArea で Twitter ハッシュタグ リンクが正しく機能するようにするには、次のようにします。
addLinkHandler( textArea.textFlow );
PSクリックハンドラーを追加するアルゴリズムは、この投稿に基づいていますが、最適化されています。