[AS3] Text Layout Framework(TLF)でハマらないために [Edit]

Flash Professional CS5から備わったText Layout Framework(TLF)は、テキストにInDesignのような細かな設定が加えられます。他方、Text Layout Frameworkのライブラリがデフォルトではランタイム共有ライブラリから読込まれるため、インスタンスは独自の生成過程を経ます。タイムラインに[TLFテキスト]を置いただけで、思わぬ結果になることもありますので注意が必要です。

本稿では細かな説明は省き、フォーラムやblog記事などの紹介にとどめます。詳しくは、それらのトピックや記事をお読みください。また、Text Layout Frameworkの基礎については、つぎのgihyo.jp連載「ActionScript 3.0で始めるオブジェクト指向スクリプティング」の解説をご参照ください。

[1]FLASH-japan:
nullのオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません
TLFテキストボックスを配置すると、クラスからstage変数が取得できない
クラス定義でflashx.textLayoutパッケージのクラスを使ったとき、コンストラクタメソッドからDisplayObject.stageプロパティでStageオブジェクトにアクセスできません。→「flashx.textLayoutパッケージのクラスを使うとコンストラクタからStageにアクセスできない

[2]FLASH-japan:「TLFテキストのフォーマット変更について
予めタイムラインに置いたTLFテキスト(TLFTextField)インスタンスに、TextLayoutFormatオブジェクトでフォーマットを適用しようとしても、[プロパティ]インスペクタの設定が勝ります→「予め配置したTLFテキストのインスタンスにTextLayoutFormatが適用できない

[3]FLASH-japan:「読み込んだ外部SWFファイルの操作のことで質問があります
Loaderクラスで[TLFテキスト]が含まれた外部SWFファイルを読込むと、SWFファイルのメインタイムラインがLoader.contentプロパティで参照できません。→「TLFテキストのある外部SWFを読込むとその中のオブジェクトにアクセスできない

[4]「予め配置したインスタンスの存在しないフレームに移動しても参照が消えない
MovieClipシンボルの中に[TLFテキスト]があると、MovieClipインスタンスのないフレームに移っても、インスタンスはメモリから消えません。

[5]RIAxDNP「【TLF】ハマったポイントと回避方法
TLF(Text Layout Framework)について、ハマったポイントと解決方法を紹介したblog記事です。

[5]「TLFテキストを含むインスタンスがステージの表示リストから除かれるとき」(2011/07/15追加)
ステージに置いたインスタンスがタイムラインから除かれるときには、DisplayObject.removedFromStageイベント(定数Event.REMOVED_FROM_STAGE)が起こります。ところが、そのインスタンスがTLFテキストを含むと、内部的に初期化が行われるため、一筋縄ではイベントが意図どおりに扱えません。

[6]「TLFテキストが配置されたメインタイムラインの初期化」(2011/08/07追加)
[TLFテキスト]で使われるActionScriptライブラリは、デフォルトではランタイム共有ライブラリとして読込まれます。そのため、[TLFテキスト]を用いたSWFファイル本体は容量が小さく抑えられるものの、ライブラリのロードに少し時間がかかったり、初期化される間にメインタイムラインが密かに表示リスト間をさまよったりします。しかも、そのふるまいが、Flash Player 10や10.1(Flash Professional CS5)と10.2(同CS5.5)とでは異なることに、注意しなければなりません。

コメント

この記事にコメントを書く

記事に対するテクニカルな質問はご遠慮ください(利用規約)。

その他の記事