- ベストアンサー
静止テキストに任意の文字を表示させたい
フレームが2つあり、フレーム1では文字を入力させ、フレーム2はその確認のために文字出力をさせたいと考えているのですが、テキスト出力ができなくて困っています。 具体的には、フレーム1で、text1というテキスト入力フィールドを用意し、確認ボタンでフレーム2へ飛びます。 フレーム2にフレーム1のtext1フィールドの値を静止テキストで出力させたいのですが、静止テキストには変数名が付けられないため書き出せません。 テキスト入力フィールドで、入力不可にできればそれでもいいのですが。。 何か良い方法があれば教えて頂ければ幸いです。 当方Flash MXです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
#1です。 入力部分の色、とは、テキストフィールドの背景色のことでしょうか? 同じく TextField オブジェクトが持っている background と backgroundColor というプロパティで、好きな色に変更できます。 この作例は以前紹介したことがありますので、よろしければご参考になさってください。 ・flash MX でのテキストフィールドの色変更 http://okwave.jp/kotaeru.php3?q=962597 ヘルプには「背景の色が表示されるのはテキストフィールドに境界線がある場合のみ」とありますが、これは”背景がある場合”の誤りと思われます。 境界線の有無は border 、背景の有無は background プロパティで設定できます。どちらも、true であり、false でなしです。 border (境界線)が false でも background (背景)が true であれば、backgroundColor で設定した色がテキストフィールドの背景色になります。この場合は境界線は表示されません。 逆に、border が true で background を false にすると、境界線だけを表示し背景を透過させることもできます。 ------------------------------------------- 裏技というほどのものでもありませんが。 「プロパティ」パネルで”ボーダー”ボタンを OFF にすると、境界線・背景ともに”なし”( border ・ background プロパティがともに false )に設定されます。 この状態ではテキストフィールドの背景は透明になっていますので、線のない塗りだけの四角形を描画してこの上に境界線・背景のないテキストフィールドを重ねると、好きな色の背景を付けることができます。 単色の四角形の背景であれば backgroundColor プロパティでも充分ですが、例えばグラデーションのかかった背景やパターンで塗りつぶした背景などは backgroundColor プロパティでは作れません。 境界線・背景のないテキストフィールドを絵の上に重ねる技法は、テキストフィールドに独特の背景を付けたい時に有効です。 漫画のフキダシのようなものや、ゲームなどによくあるメッセージウィンドウのように独特のデザインの枠内にテキストを表示するといった作品も、下に絵を描いて境界線・背景なしのテキストフィールドをその上に重ねると簡単です。
その他の回答 (1)
- DPE
- ベストアンサー率85% (666/776)
要するに、確認画面ではテキストフィールドが編集不可になってさえいればいいとのことですよね。 フレーム2のテキストフィールドを「ダイナミックテキスト」にしてはいかがでしょうか。ダイナミックテキストは編集不可(選択不可)に設定できます。 例えば、フレーム1に text1 、フレーム2に text2 というテキストフィールドを配置するとします。 text1 はタイプを「テキスト入力」に、プロパティの「変数:」のところに” input_txt ”と入力したとします。 すると、text1 に入力されたテキストは変数” input_txt ”に格納されます。 フレーム2の text2 はタイプを「ダイナミックテキスト」にします。 text2 の「変数:」にも” input_txt ”と設定しておくと、text2 には input_txt の値、つまり text1 に入力した内容が表示されます。 ダイナミックテキストでは、テキストフィールド内のテキストを選択可能 / 不可能に設定することもできます。 テキストフィールドの行タイプを決めるリスト(”単一行””複数行”などを選択するリスト)の横に、小さなボタンが3つほど並んでいるかと思います。 左端にある” Ab ”と書かれているボタンが、選択の可否を決めるボタンです。 白く反転して押し込まれているような状態が ON (選択可能)です。 ON になっている場合は、再度クリックして OFF にしてみてください。テキストフィールド内のテキストを選択するなどの編集ができなくなります。 --------------------------------------------------------- 上記の例は、フレーム1と2で別のテキストフィールドを置く場合です。 フレーム1と同じテキストフィールドを続けてフレーム2でも使う場合は、スクリプト制御することで、フレーム1では「テキスト入力」、フレーム2では「ダイナミックテキスト」「編集不可」にするという器用なことが可能になります。 「静止テキスト」以外のテキストフィールドは TextField オブジェクトで細かく制御できます。 TextField オブジェクトが持っている type プロパティには、テキストフィールドの種類を示す文字列が入っています。” dynamic ”が「ダイナミックテキスト」、” input ”が「テキスト入力」です。 また、selectable というプロパティで選択の可否を設定できます。 例えばフレーム1でテキストフィールド” text1 ”が登場し、フレーム2まで存在しているとします。 このテキストフィールドは、「プロパティ」パネルで「テキスト入力」に設定したものとします。 フレーム1と2に、次のようなスクリプトを設定してみてください。 (↓各行頭に全角のスペースが入っています。コピーする際はご注意ください) ●フレーム1 //”テキスト入力””選択可能”に設定する text1.type = "input"; text1.selectable = true; //タイムラインを止めておく stop(); ●フレーム2 //”ダイナミックテキスト””選択不可”に設定する text1.type = "dynamic"; text1.selectable = false; //タイムラインを止めておく stop(); type プロパティが” dynamic ”になっているテキストフィールドでは、テキストの入力はできません。 しかし、text1 はフレーム1では「テキスト入力」だったために、selectable プロパティが true (選択可能)になっています。 フレーム2で type プロパティを書き換えてダイナミックテキストに変更すると、テキストの入力はできなくなるのですが、フレーム1で入力されたテキストを選択することだけは可能です。 つまり、フレーム2では selectable を false に設定すると、選択も入力も禁止することができます。 フレーム2からフレーム1に戻ると、テキストフィールドのタイプは input 、つまり「テキスト入力」に変わります。 ところが、フレーム2で selectable プロパティを false に変更してこのテキストフィールドでのテキストの選択等を禁止したため、type プロパティを変更しただけではテキスト入力はできないままです。 ムービー編集中に「プロパティ」パネルで「テキスト入力」を選んだ時、ActionScript の selectable プロパティは自動的に true に設定されます。 しかし、その後スクリプトでテキストフィールドのタイプや選択の可否を変更した場合は、自分で責任を持ってこれらのプロパティを書き換えなければなりません。 フレーム1と2の間を自由に行き来してテキストを入力し直せるようにする場合は、selectable プロパティの書き換えをお忘れなく。 ・・・とまあ、スクリプトでテキストフィールドの属性を変えることもできないわけではありませんが、少々面倒です。 特に事情がなければ、最初からテキストフィールドを各フレームにそれぞれ用意し、入力画面のテキストフィールドは「テキスト入力」に、確認画面では選択不可の「ダイナミックテキスト」にして、両者で同じ変数を利用する方が簡単だと思います。
お礼
DPE様、 丁寧なご回答ありがとうございましたm(_ _)m。 > 左端にある” Ab ”と書かれているボタンが、選択の可否を決めるボタンです。 なんと・・。 静止テキストとテキスト入力は、プロパティをチェックしていたのですが、ダイナミックテキストにあったとは気付きませんでした! 希望はこれでかなうのですが、もし可能でしたらもう1点だけ、ご教授願いたいのですが、 テキスト入力やダイナミックテキストの入力部分は、色を変えられないのでしょうか。 とりあえず背景を白にして、ボーダーの有無で、何とかなるのですが、他の色だとできないようですので・・。 何か裏技があればヒントを教えて頂ければ幸いです。
お礼
DPE様、 たびたびのご回答ありがとうございましたm(_ _)m。 > 入力部分の色、とは、テキストフィールドの背景色のことでしょうか? はい、その通りです。 > 同じく TextField オブジェクトが持っている background と backgroundColor というプロパティで、好きな色に変更できます。 > この作例は以前紹介したことがありますので、よろしければご参考になさってください。 ありがとうございました。ヘルプにのっていたとは気付きませんでした。背景色という言葉では検索したのですが・・。調査不足ですみません。 どうもヘルプが思い通りに検索できないです。。 > 裏技というほどのものでもありませんが。 > 「プロパティ」パネルで”ボーダー”ボタンを OFF にすると、境界線・背景ともに”なし”( border ・ background プロパティがともに false )に設定されます。 > この状態ではテキストフィールドの背景は透明になっていますので、線のない塗りだけの四角形を描画してこの上に境界線・背景のないテキストフィールドを重ねると、好きな色の背景を付けることができます。 なるほど!確かにボーダーをなくすと背景もなくなりますね。 参考になるご回答本当にありがとうございました!