2011-03-01 12 views
1

Spark RichEditableTextコンポーネントの不思議なテキストのレンダリング動作を誰かが知ることができるのかどうか不思議です。フレックス4のテキストレンダリング:RichEditableTextコンポーネント

<?xml version="1.0" encoding="utf-8"?> 
<s:Application 
xmlns:fx="http://ns.adobe.com/mxml/2009" 
xmlns:s="library://ns.adobe.com/flex/spark" 
xmlns:mx="library://ns.adobe.com/flex/mx" 

creationComplete="handleApplicationCreationComplete()" 
> 
<fx:Script> 
    <![CDATA[ 
     import flashx.textLayout.conversion.TextConverter; 

     private static const DATA:Array = 
     [ 
      "First sentence. This is a test of text rendering. How's it look?", 
      "Let's see if this actually works correctly.", 
      "Add some variety with the <b>bold</b> tag...", 
      "Throw in a <a href='http://www.example.com'>link</a> as well!", 
      "Well?! Does it work as expected? I think not..." 
     ]; 

     private var currentIdx:int; 

     protected function handleNextClick():void 
     { 
      currentIdx++; 
      if(currentIdx >= DATA.length) 
       currentIdx = 0; 
      display(currentIdx); 
     } 

     protected function handleApplicationCreationComplete():void 
     { 
      currentIdx = 0; 
      display(currentIdx); 
     } 

     private function display(idx:int):void 
     { 
      contentDisplay.textFlow = TextConverter.importToFlow(DATA[idx], TextConverter.TEXT_FIELD_HTML_FORMAT); 
     } 
    ]]> 
</fx:Script> 

<s:layout> 
    <s:VerticalLayout /> 
</s:layout> 

<s:VGroup width="100"> 
    <s:RichEditableText id="contentDisplay" 
     width="100%" 
     enabled="false" mouseEnabled="false" 
     editable="false" focusEnabled="false" 
    /> 
</s:VGroup> 
<s:Button label="Next" click="handleNextClick()" /> 
</s:Application> 

上記アプリケーションは、単にDATAアレイ(Nextボタンが押されるたびに)の5つの文をナビゲートします。何らかの理由で、RichEditableTextコンポーネントは、新しいコンテンツを設定する前に、そのビューを完全にリセットしない(前のテキストをクリアすることによって)。私が集めることから、この欠陥のあるレンダリングは何とか行数と相対幅の組み合わせに基づいています。また、RichEditableTextコンポーネントのwidthプロパティを相対(パーセント、100%)ではなく絶対値(たとえば、100)に設定すると、テキストが正しくレンダリングされることも発見しました。

私の知る限り、この動作は意図しきではなく、実際にはバグです。

Text on startup

Text after "next" is clicked

Text after "next" is clicked again

+0

これは私のために正しく動作していると思います。あるいは、少なくとも私は明らかに間違ったことは見ていない。あなたが見ている悪い行為のスクリーンショットを投稿できますか?どのSDKバージョンを使用していますか? –

+0

コードの動作も見当たらなかった。私もフラッシュプレーヤーのバージョンをチェックします。 –

+0

私はFlex SDK 4.1を使用しています.AdobeのWebサイトによると、Flashplayerのバージョンは10,1,102,64です。私はそれがプレーヤーのバージョンとは何か関係があるとは思わない。私もスクリーンショットを追加しました – Andrey

答えて

0

何の解決策はありません、それはこれが4.1 SDKのバグです...フレームワークに

0

バグです。この問題を回避するには、RTEをクリアして、サブフレームで更新します。

callLater(function workAround(richEditableText:RichEditableText, updateText:String):void 
{ 
    richEditableText.text = updateText; 
} 
, [ myRichEditableTextComponent, myNewMessageText ]); 

以前にRETを更新していた場所にこのコードを置き、コンポーネントと新しいテキストを渡します。テキストフローを使用していて、テキストとテキスト文字列をフローと置き換えるだけで、これは同じように機能するはずです。

関連する問題