Let's talk about Flex, AIR, ActionScript, ColdFusion and more    

Moduleを使ってランタイムにフォントをロードするサンプル


Flex 2.0.1 がリリースされる以前に作成したFontsLoader01で使用しているFlexFontsみたいにフォントがうまく埋め込まれないという質問がありました。

と、言われてもなぁ。おいらのサンプルではてゃんと機能しているからなぁ。FontsLoader01 のソースをみて分かるように"registerLoadedFont"っていう関数の中でフォントを"登録"してるんだよね。んで、FlexFontsではEmbedしているだけで登録していないのね。こういうところがMXMLのプロジェクトとASオンリーのプロジェクトの違いなのね、実は。MXMLのプロジェクトでフォントをEmbedするとASにジェネレイトされたタイミングでフォントを登録するコードが自動的に生成されてコンパイルされるのね。だから、FlexFontsでEmbedされたフォントを使用するには"登録"するコードを書かないといけないわけで...っていう事までは伝わっていないかな、もしかして ^_^;
まぁ、とにもかくにももう一度確認してください m(__)m

ただ、上記のサンプルは2.0.1のリリース前だからModuleを使用していないのね。てなことで、Moduleを使用するサンプルを作ってみました。

FontsModule

FlexBuilder3でSDK2.0.1を使用して作りました。
なぜか、ソースビューがしょぼくなっています(;一_一)
CSSのコンパイルが右クリックでできるのは便利。
しかも、一度コンパイルすると「.actionScriptProperties」に「buildCSSFiles ⇒ buildCSSFileEntry」として登録されて、次回以降はプロジェクトをコンパイルすると同時にコンパイルしてくれる。うん、便利で感動 ^_^; でも、CSSファイルの場所を移動した場合、以前の情報がゴミとして残るんだけど...w

同一プロジェクトで作ったけど、手順は
「FlexFonts.css」をコンパイルして「FlexFonts.swf」を作成。
「FontsModule.mxml」をコンパイルして「FontsModule.swf」を作成。
「FontsModule.swf」を実行して、「load」ボタンをクリックすると"StyleManager.loadStyleDeclarations"で「FlexFonts.swf」がロードされ、第2引数がtrueなのでCSSが即時アップデートされます。"StyleManager.loadStyleDeclarations"は内部で"ModuleManager.getModule"を実行しています。


コメント
BlogCFC was created by Raymond Camden. This blog is running version 5.5.005.