- ベストアンサー
外部から読み込んだテキストにアンカーを設定したい
- 以前の質問の続編です。更新情報をスクロールバー付のテキストエリアで表示していますが、各トピックにアンカーを設定して詳細ページにジャンプしたいです。
- 1つのトピックごとに個別のテキストファイルに格納し、読み込みながら連結して最終的にテキストフィールドに表示しています。
- アンカータグを使用してリンクを設定することで、テキストにアンカーを設定することが可能です。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
すみません、スタイルシートでも改行されないようにする方法がありました。 setStyle で定義するスタイルに、 display: 'inline' というスタイルを追加してください。 デフォルトでは display: 'block' になっているようで、display を定義していない状態では、閉じタグで強制的に改行されるようです。 MX 2004 に付属の TextEnhancements というサンプルがあります。CSS を使ったサンプルですが、このサンプルで読み込まれる CSS では display が定義されていました。 度々お間抜けな間違いをしまして、申し訳ありません。この場をお借りして、訂正・お詫びさせていただきます。
その他の回答 (4)
- DPE
- ベストアンサー率85% (666/776)
独自に定義したスタイルのタグでは、閉じタグの時点で改行されます。 例えば、 <HP><A href="***.html">○○○○</A>■■■■</HP>△△△△ このようにすると、 ○○○○■■■■ △△△△ という配置になります。アンカーテキストだから改行されるというのではなく、独自に定義した <HP> の閉じタグが見付かった時点で、強制的に改行されてしまいます。 融通は利かなくなりますが、独自のスタイルを定義するのと同じ要領で、Flash で使える HTML タグ(ビルトイン HTML タグ)のスタイルを定義することもできます。 styles.setStyle( "A" , { color: '#FF0000' , fontSize: '25px' , fontWeight: 'bold' , textDecoration: 'underline' } ); このようにすると、<A> タグのスタイルを定義できます。 <A> タグでは改行されません。この性質を引き継ぎながらスタイルを設定できます。 ただし、スタイルはテキストフィールド内の全ての <A> タグに適用されます。disp_fld のアンカーテキストは、必然的にこのスタイルに固定になります。 余談ですが、テキストを HTML としてレンダリングする時は、改行に <BR> タグが利用できます。改行コード( %0A または %0D )が正常に機能しない場合は、<BR> タグで入れてください。 HTML に比べるとずいぶん不便な仕様ですが、所詮、内部で擬似的にサポートされているという程度の機能です。制約があるのは仕方ないのかもしれません。 ------------ データベース関連は詳しくないので、Access と連携が可能かどうかは分かりませんが・・・ データベースと連携するとしたら、XML を利用して Flash にデータを持ってくるといった形になるのではないでしょうか。 ( XML は Flash でも解析できますし、XML と連携するコンポーネントもあります) XML を扱うとなると、XML の解析・解析したものを利用して表示するスクリプトが必要になるなど、難しくなります。できればテキストファイルだけで何とかする方が、簡単だと思いますが。
- DPE
- ベストアンサー率85% (666/776)
タグの記述は test=<FONT size="16">aaaaaaaaaa</FONT> で、間違いないと思います。 それでも変わらないとすると、あとはテキストフィールドのプロパティそのものでしょうか? 「プロパティ」パネルでテキストのサイズを 16 ポイントに設定していると、タグで指定しない普通の文字が 16 ポイントで表示されます。 <FONT> タグでそれと同じサイズを指定しているならば、大きさが変わっていないように見えるのは当然ですが・・・。 どうしても上手くいかないようでしたら、スタイルシートを利用してみてはいかがでしょうか。 例えば、テキストファイルの方に test=<HP><A href="***.html">○○○○</A></HP> と、とりあえず <HP> というタグを勝手に付けます。 Flash では次のようなスクリプトを設定して、スタイルを定義します。 テキストフィールドのインスタンス名は disp_fld とします。htmlText プロパティにテキストを入れてからではスタイルは適用されませんから、ファイルを読み込む前に、初期設定の一環として実行しておきます。 クラス名である” TextField.StyleSheet ”と、スタイルを管理する TextField クラスのプロパティである” styleSheet ”は、” style ”のsが大文字か小文字かだけで区別されています。文法上も書き方がよく似ていて紛らわしいので、ご注意ください。 //スタイルを作成 styles = new TextField.StyleSheet(); styles.setStyle( "HP" , { color: '#FF0000' , fontSize: '25px' , fontWeight: 'bold' , textDecoration: 'underline' } ); //スタイルを登録 disp_fld.styleSheet = styles; disp_fld で表示するテキストで、<HP> というタグでくくられている部分は、 文字色:赤 サイズ:25ポイント 装 飾:太文字、下線付き というスタイルで表示されるようになります。 サイズの単位は外部 CSS ファイルを読み込む時の互換のために残されているだけで、実際は数字の部分しか意味を持ちません。(スタイルの指定が px でも pt でも、Flash では一律ポイントになります) 外部 CSS ファイルを読み込むと、また、読み込みの終了を待たなければならないなどの面倒が出てきます。アンカーテキストのスタイルを変えたいだけなら、ActionScript でスタイルを定義した方が簡単です。 利用できるスタイル等の詳細は、ヘルプの「 ActionScript ユーザーガイド」→「テキストの操作」→「 CSS によるテキストのフォーマット」をご参照ください。
お礼
DPEさん、 ごめんなさい。ActionScriptでFontの指定をしていました。教えて頂いた通りスタイルシートを使おうと思ってScriptを見直していたら、Tabの設定と同時にFontとBoldの指定をしていました。 ただ、スタイルシートの方が一律に指定出来て、各々のテキストでのタグの記述が少なくなりますので。 やはり、テキストファイルでの運用では結構文の体裁を整えるのが面倒で、Accessに格納してFlashで読み込むように出来れば良いのですが。(新たな質問をさせて頂きます) これからも宜しくお願い致します。
補足
DPEさん、 test=<P><HP><A href="xxxx.html">Vol.1</A></HP>XXXXXXX</P> こんなテキストなんですが、「Vol.1」は確かにスタイルシートが反映されていますが、「xxxxx」が改行されて表示されます。 <P>タグが悪さをしているのかなぁと思い、 test=<HP><A href="xxxx.html">Vol.1</A></HP>XXXXXXX このように<P>タグを外しましたが結果は一緒です。 何故改行されるのでしょう?。 スタイルシートで定義されているのは、 Color,Size,Weight,Decorationだけですよね。 何故なのでしょう?。
- DPE
- ベストアンサー率85% (666/776)
Flash での <FONT> タグは、どうも、2つの属性を1つのタグ内に書くと正常に解釈されなくなってしまうようです。 test=<FONT color="#ff0000"><FONT size="16"><A href="***.html"><B>○○○○</B></A></FONT></FONT> このように、<FONT color> と <FONT size> を分けてみてはいかがでしょうか。
補足
test=<FONT size="16">aaaaaaaaaa</FONT> 上記のような記述で試してみましたが、大きさは全く変わりませんでした。HELPも確認しましたが「size」は利用出来るとありましたが。 何が悪さをしているんでしょうか?。 どうぞ宜しく御願い致します。
- DPE
- ベストアンサー率85% (666/776)
テキストフィールドでは一部の HTML タグが利用できます。 <A> タグを使って、外部から読み込むテキストをアンカーテキストにすることは可能です。 まず、テキストファイルを作る時に、 test=<A href="***.html">○○○○</A>□□□□ と、HTML の <A> タグを入れておきます。この例では、○○○○の部分だけがアンカーテキストになります。 HTML タグ付きのテキストを扱う時は、TextField クラスの html プロパティを true にする必要があります。 編集画面の「テキストをHTMLとしてレンダリング」ボタン(「プロパティ」パネルで、変数を指定する項目の左に並んだ3つのボタンのうちの、中央にある「<>」ボタン)を押しておくと、html プロパティが true に設定されます。 もちろん、ActionScript で disp_fld.html = true; このように設定しても構いません。 http://okweb.jp/kotaeru_reply.php3?q=961443 では、読み込んだ内容を作業用変数 temp に連結していき、最後に text プロパティに移して表示するスクリプトをご紹介しました。 今回も発想は同じなのですが、text プロパティの内容を表示すると、HTML タグが付いた状態のテキストが表示されてしまいます。 HTML タグをタグとして解釈(レンダリング)して表示するには、text プロパティの HTML 版である htmlText というプロパティを使います。全てのファイルを読み終えたら、text ではなく htmlText プロパティに、temp の中身を代入してください。 Flash はブラウザとは違い、リンク部分に色が付いたり、下線が自動で表示されることはありません。 <A> タグでくくった部分がアンカーテキストになって、カーソルを当てれば手の形には変わるものの、それだけでは普通の文章と区別がつかず、閲覧者には分かりにくいかと思います。<FONT> や <I> <B> <U> タグを併用して、アンカーであることを分かりやすくするといいでしょう。 タグの基本的なルールは HTML と同じです。利用可能なタグについては、ヘルプの「 Flash ユーザーガイド」→「テキストの操作」→「リッチテキスト形式の保存」をご参照ください。 <FONT> タグでは、color 属性で文字色、size 属性でサイズを指定できます。ただし、HTML では size は1~7で指定しますが、Flash では単位はポイントになっているようです。HTML のように1~7で指定すると字がゴマ粒のように小さくなってしまいますので、ご注意を。 Flash MX 2004 からは、テキストフィールドでスタイルシートが利用できるようになりました。 スタイルは、既存の CSS ファイルを読み込んで定義することも、TextField.StyleSheet クラスを使って ActionScript だけで定義することもできます。 <FONT> タグやタブだけではできない細かいスタイルの指定が必要でしたら、スタイルシートを利用してみてください。
補足
DPEさん、 ご無沙汰しております。ありがとうございます。 教えて頂いた通り、<A>,<I>,<U>,<P>,<B>,<FONT>等を利用してアンカーを設定する事が出来ました。 ただ、一点だけSizeの指定がうまくいきません。 <font color="#ff0000" size="16" > -->大きさに変化無し <font color="#ff0000" size=7 > -->多分、「size=7」が解析出来ないのでしょう。表示されません Size指定って、どのようにすれば良いのでしょうか?。
お礼
DPEさん、 いつもありがとうございます。 お詫びなどとんでもないです。こちらこそ、いついつも世話になりっ放しでお詫びしなければなりません。 早速「display: 'inline'」試してみます。 これからも宜しく御願いします。