0

TLFを使用して辞書エントリをレイアウトしています。これはかなりうまく機能していますが、FlowElementsでスタイルプロパティを設定することで達成できるよりも、レイアウトをよりきめ細かく制御する必要があります。主に、親とは関係なく、SpanElementsで水平方向の間隔とパディングを設定します。

最も有望と思われる解決策は、エントリのさまざまな要素を個別のコンテナに分割し、コンテンツの境界にサイズが設定された新しい要素ごとに新しいコンテナとContainerControllersを段階的に追加して、テキストがそれらを通過するようにすることです。容器。

このALMOSTは機能しますが、異なるコンテナに移動する必要があるテキストの2つのセクションの間に余分な改行が挿入された場合にのみ、テキストは次のコンテナに正しく流れます。改行がない場合、コンテナのサイズは正しくなりますが、テキストは表示されません。

これらの例では、コンテナスプライトに境界線を追加して、それらが描画されている場所を確認できるようにしました。改行を除いて、テキストはまったく同じです。音節フィールドは、ParagraphElement内のSpanElementです。発音ラベルとテキストは、別のParagraphElement内の個別のSpanElementです。

改行なし:

改行なし

'rab-bit'と'SoundsLike:'の間に改行があります:

1休憩

'rae biht'の後の改行あり(事前の改行は効果がありません):

2休憩

ご覧のとおり、テキストの後に改行を追加しない限り発音は表示されませんが、配置はオフになります。改行の組み合わせは、それらを正しく整列させていないようです。

何か案は?これらのバグはTLFにありますか?別の方法を試す必要がありますか?すべてのテキストを1つのユニットとして選択できるようにしたいので、TLFが提供するより優れたレンダリングと制御が大好きですが、レイアウトの柔軟性も必要です。改行やポジショニングオフセットを使ってこのようなものを一緒にハックすることは可能だと思いますが、それは確かにきれいではありません(または保守可能ではありません)。読んでくれてありがとう。

4

1 に答える 1

1

しばらく前に、これに役立つかもしれない Adob​​e Cookbooks のレシピを書きました。基本的に、スパン要素と段落要素の使用を完全にやめて、主にコンテナー コントローラーに集中する方がはるかに簡単であることがわかりました。それが役に立てば幸い:

プレーン テキスト アセット用に書式設定された TextFlow レイアウトを生成する


アップデート

動的コンテナーの場合、おそらく行末区切り文字を使用してターゲット文字列を決定し、その文字列の長さ、フォント サイズ、パディングなどを決定できます。コンテナーに必要なサイズを見つけ、それに応じてコンテナーのサイズを変更できます。次のように呼び出します。

targetFlow.flowComposer.getControllerAt(controllerIndex).getContentBounds().width;

//and/or

targetFlow.flowComposer.getControllerAt(controllerIndex).getContentBounds().height;

テキスト フローのフォント サイズをコンテナー内に収まるように自動的に変更する、私が書いた別のレシピを次に示します。 TextFlow コンテナーのフォント サイズの自動化

しかし、私が行ったようにフォントサイズを変更する代わりに、コンテナのサイズをテキストに合わせて変更できます。

これが役立つことを願っています。

于 2010-11-21T00:27:17.500 に答える