SWF上のテキストフィールドに入力した内容を、別のテキストフィールドに特定のフォントで表示させる実験。
今回の実験では、下記の項目をあえて必須要素としました。
- 埋め込みフォントを使用し、フォントがインストールされていないPCでも、見た目が変わらないようにする。
- フォントシンボルを共有ライブラリとして外部SWFに置く。つまりテキストフィールドに入力させるSWFと、フォントシンボルの入ったSWFをそれぞれ別々にする。
■制作上の注意点
- フォントシンボルを共有ライブラリSWFにする必要がある。
- 共有ライブラリのシンボルの読み込みは、それが配置される直前のフレームである。
- つまりムービーがロードし終わっても、共有ライブラリのフォントシンボルはまだ読み込まれていない。
- それを回避するため、間にもう一つ共有ライブラリを読み込むためだけのSWFをはさむ。
- 結局、合計3つのSWFが必要となる。
- フォントシンボル共有ライブラリSWF
- 共有ライブラリSWFをからのMCに読み込み、キャッシュさせるSWF
- テキストフィールドに入力、表示させるSWF
■フォントシンボル共有ライブラリSWFの作成
- 空のテキストフィールドを作成、使用したいフォントを埋めこむ。「例:A-OTF 新ゴ Pro M」
- 識別子:myFont
- リンケージは下記のようにチェック
- ActionScriptに書き出し
- ラインタイム共有用に書き出し
- 最初のフレームに書き出し
- SWFにパブリッシュ
■キャッシュさせるSWFの作成
- 先に作成した、外部ライブラリの読み込みでmyFontを読み込み。
- 識別子:myFont
- リンケージは下記のようにチェック
- ラインタイム共有用に読み込み
- ステージ上に配置
- SWFにパブリッシュ
■テキストフィールドに入力、表示させるSWFの作成
空のMCを作成してステージ上に配置。インスタンス名「emptyMC」とする。
メインのタイムラインの1フレーム目に下記のスクリプトを記述。
this.stop();
var loaderListener:Object = new Object();
loaderListener.onLoadInit = function() {
_root.nextFrame();
}var loader:MovieClipLoader = new MovieClipLoader();
loader.addListener(loaderListener);
loader.loadClip("./キャッシュさせるSWFのファイル名", emptyMC);
var loaderListener:Object = new Object();
loaderListener.onLoadInit = function() {
_root.nextFrame();
}var loader:MovieClipLoader = new MovieClipLoader();
loader.addListener(loaderListener);
loader.loadClip("./キャッシュさせるSWFのファイル名", emptyMC);
2フレーム目に下記のスクリプトを記載
this.stop();this.createTextField("_txt",10, 10, 210, 200, 120);
this._txt.border = true;
this._txt.type = "input";
this._txt.selectable = true;
this._txt.multiline = true;
this._txt.wordWrap = true;
this._txt.text="テキストフィールドができました";var my_fmt:TextFormat = new TextFormat();
my_fmt.font = "A-OTF 新ゴ Pro M";
this.createTextField("_txt2″, this.getNextHighestDepth(), 10,10, 200, 120);
this._txt2.border = true;
this._txt2.wordWrap = true;
this._txt2.embedFonts = true;
this._txt2.setTextFormat(my_fmt);
this._txt.border = true;
this._txt.type = "input";
this._txt.selectable = true;
this._txt.multiline = true;
this._txt.wordWrap = true;
this._txt.text="テキストフィールドができました";var my_fmt:TextFormat = new TextFormat();
my_fmt.font = "A-OTF 新ゴ Pro M";
this.createTextField("_txt2″, this.getNextHighestDepth(), 10,10, 200, 120);
this._txt2.border = true;
this._txt2.wordWrap = true;
this._txt2.embedFonts = true;
this._txt2.setTextFormat(my_fmt);
テキストフィールド1「_txt」に入力した内容を、テキストフィールド2「_txt2」に表示するボタンを作成する。
on (release) {
_txt2.text = _txt.text;
_txt2.setTextFormat(my_fmt);
}
_txt2.text = _txt.text;
_txt2.setTextFormat(my_fmt);
}
今回のスクリプトの例では、フォントは「A-OTF 新ゴ Pro M」を埋め込んでいるが、別に何のフォントでもかまいません。
ただし、日本語フォントは文字数が多く、それだけ容量が大きくなるので注意が必要です。

コメントする