| 対象 | FLASH MX 2004 |
FLASHのTextFiledは面白いです。MX 2004なら、HTMLにCSSもIMGタグも使えるし、いろいろ遊んでみました。
(1) 普通にHTML表示
TextFieldを作って、htmlをtrueにして、htmlTextにテキストを設定します。
FLASH a_txt.html = true;
a_txt.htmlText = "<B>test</B>aaaaa<BR>bbbbb";
(2) リンクする
リンクを作ってみました。<A href="">と書きたいところですが、ダブルコーテーション(")は、文字列の括りで使うので、シングルコーテーション(')で括ると便利です。でも、普通のHTMLと違って、自動的に色が変わったり下線がついたりすることはありません。
FLASH a_txt.html = true;
a_txt.htmlText = "<A href='http://www.text2music.com'>text2musicへ</A>";
そこで、リンクを明示したい場合は、自分で色を変え<FONT color="色指定">、下線<U>をつける必要があります。色指定には、blueとかredとかHTMLで使える定数は使えません。ちなみに、Windows XPのローカルな環境でZIP形式のファイルをリンクするとエクスプローラーでZIPファイルの内容が表示され、バッチファイルや実行可能(EXE)ファイルをリンクするとIEと同じようにダウンロードするか実行するか尋ねるダイアログが出ました。(正当な動きですね)
FLASH a_txt.html = true;
a_txt.htmlText = "<U><FONT color='#0000FF'><A href='http://www.text2music.com'>" +
"text2musicへ</A></FONT></U>";
(3) リンクに ActionScriptの関数を埋め込む→こちら
(4) ムービークリックを埋め込む
IMGタグでムービークリップを表示させることができるのは嬉しい限りです。
(但しこの場合は、リンケージでActionScriptに書き出しをチェックしておく必要があります。)
FLASH a_txt.html = true;
a_txt.htmlText = "<IMG src='b_mc'>";
(5) 動的にHTMLをロードしてみる
ボタン(a_btn)をクリックしたとき、HTMLファイル(test.html)を動的にロードして、テキストフィールドに表示する例です。
(LoadVarsにonDataを定義すると、onLoadが呼ばれない代わりに、生のデータを取得することができます。)
FLASH a_btn.onRelease = function () {
html_lv = new LoadVars();
html_lv.onData = function (src) {
a_txt.html = true;
a_txt.htmlText = src;
}
html_lv.load("test.html");
}
(5') Windows で作った HTMLファイルを読む
ここで問題になるのは、HTMLファイルに、FLASH未対応タグがあっても、無視してテキストを表示してしまうことです。
<HTML><HEAD><TITLE>title</TITLE>...というHTMLを読み込むと・・・titleを表示してしまいます。
ですからHTMLエディタで作ったデータをテキストフィールドに直接表示するときは、注意しましょう。
あとは、こちらでも言及してますが、普通にWindowsのメモ帳で作ったデータを読み込むと、改行が2つになってしまいます。
必ずWindowsで作ったデータを読み込むと決まっている場合には、以下のようにすると良いでしょう。
FLASH System.useCodepage = true;//SHIFT-JISを使う
a_btn.onRelease = function () {
html_lv = new LoadVars();
html_lv.onData = function (src_str) {
//改行コードを直す
temp_array = src_str.split( String.fromCharCode(13,10) );
src_str = temp_array.join( String.fromCharCode(13) );
//HTMLをセットする
a_txt.html = true;
a_txt.htmlText = src_str;
}
html_lv.load("test.html");
}
(6) CSSを適用してみる
(A) TextField.StyleSheet() で使う
CSSを適用する方法は2つあります。1つは、ActionScriptから指定する方法。
(この場合もスタイルシートに指定するクラス名に、".name"のように名前の初めにドットが必要なので注意です。)
FLASH // スタイルの作成
var styles = new TextField.StyleSheet();
styles.setStyle(".c1", {fontFamily:'_ゴシック', fontSize:'32px'});
styles.setStyle(".c2", {fontFamily:'_明朝', fontSize:'18px'});
// TextFieldに設定
a_txt.styleSheet = styles;
a_txt.html = true;
a_txt.htmlText = "<SPAN class='c1'>ああ</SPAN><SPAN class='c2'>ああ</SPAN>";
(B) 外部CSSを読む
外部CSS("test.css")から読む方法です。
当然のことながら、font-familyに日本語フォント名を指定するときには、漢字コードをUTF-8で保存する必要があります。
FLASH // スタイルの読込み
var styles = new TextField.StyleSheet();
styles.load("test.css");
styles.onLoad = function (ok) {
if( ok ){
// TextFieldに設定
a_txt.styleSheet = styles;
}else{
// 失敗
trace("error");
}
a_txt.html = true;
a_txt.htmlText = "<SPAN class='c1'>ああ</SPAN><SPAN class='c2'>ああ</SPAN>";
}CSS (test.css) #漢字コードをUTF-8で保存 .c1{
font-family: ARマッチ体B;
font-size: 46px;
}
.c2{
font-family: MS ゴシック;
font-size: 12px;
}