- ベストアンサー
ダイナミックテキストの表示値を得る方法
- Flash8 (AS2.0)の環境で、ボタンをクリックしてダイナミックテキストの表示値を得る方法を教えてください。
- アドレス帳.mc内のダイナミックテキストに入力された名前を表示窓に表示する方法を教えてください。
- アドレス帳.mcの名前を選択し、表示窓に表示する方法を教えてください。選択した名前が前の選択にプラスして表示されるようにしたいです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#2 です。 > その1)合計10フレームあります。 何が 10フレーム あるのかわかりませんが。 わからないのでアドレス帳.mc とかいう ムービークリップ 内が 10フレーム あるということにします。 ◎ムービーの構造 _root ├address_mc(内部が 10フレーム のMC) │ ├name_txt1(ダイナミックテキスト) │ ├name_txt2( 〃 ) │ ├name_txt3( 〃 ) │ ├name_txt4( 〃 ) │ └name_txt5( 〃 ) ├back_btn(address_mcを前フレームに戻すボタン) ├next_btn(address_mcを次フレームに進めるボタン) ├window_txt(ダイナミックテキスト) └ok_btn(window_txt に名前を入力するボタン) ◎ address_mc内 フレーム1 name_txt1←たろう name_txt2←みつこ name_txt3←はなこ name_txt4←よしお name_txt5←ただし フレーム2 name_txt1←じろう name_txt2←ふみえ name_txt3←ようこ name_txt4←しずか name_txt5←のびた _root の フレーム1 に書くスクリプト例↓。 --------------------------------- //選択した名前を入れる変数を用意 var select_name = ""; //表示用の「window_txt」も空白にしておく window_txt.text = ""; //「address_mc」内の再生を停止 address_mc.stop(); //関数 setNameText の定義 function setNameText() { //「address_mc」内の「name_txt1~5」に関してのループ for (i = 1; i <= 5; i++) { //「name_txt1~5」を選択可にする address_mc["name_txt" + i].selectable = true; //「name_txt1~5」を選択したときに実行 address_mc["name_txt" + i].onSetFocus = function() { //選択した名前を入れる変数に各名前を代入 select_name = this.text; }; } } //関数 setNameText を実行 setNameText(); //ボタン「ok_btn」をクリックしたときに実行 ok_btn.onRelease = function() { //もし select_name が空白でなければ if (select_name != "") { //選択した名前を「window_txt」に加算表示 window_txt.text += select_name + "\n"; } }; //ボタン「back_btn」をクリックしたときに実行 back_btn.onRelease = function() { //「address_mc」内を前のフレームへ戻して停止 address_mc.prevFrame(); //関数 setNameText を実行 setNameText(); }; //ボタン「next_btn」をクリックしたときに実行 next_btn.onRelease = function() { //「address_mc」内を次のフレームへ戻して停止 address_mc.nextFrame(); //関数 setNameText を実行 setNameText(); }; ---------------------------------
その他の回答 (2)
- BlurFiltan
- ベストアンサー率91% (1611/1754)
> 変数をつけるのか、インスタンス名をつけて引っ張ってくるのか…。 Flash Lite 1.x (携帯用 Flash) のような特殊なものを作るとき以外は, 通常ダイナミックテキストにはインスタンス名を付けます。 その辺からスタートするのでしたら 質問で書かれていらっしゃるような複雑なものを作る前に (複雑すぎて私は理解できませんよ) もっとシンプルで簡単なものを用意して そのシンプルなものを確実に理解して動かせるようにしてから 徐々に複雑なものを作る方が良いですし ずっと早道だと思います。 下の図のように _rootに 「name_txt1」「name_txt2」「name_txt3」というインスタンス名を付けたダイナミックテキストフィールドを用意し 「name_txt1」には 「たろう」 「name_txt2」には 「みつこ」 「name_txt3」には 「じろう」 と入力しておいたとします。 それとは別に _root に 「window_txt」というインスタンス名を付けた 複数行表示のダイナミックテキストフィールドを用意し 「ok_btn」というインスタンス名を付けたボタンインスタンスも用意したとします。 それら5つのインスタンスがあるフレーム(_root の フレーム1)に書くスクリプト例↓。 --------------------- //選択した名前を入れる変数を用意 var select_name = ""; //表示用の「window_txt」も空白にしておく window_txt.text = ""; //「name_txt1~3」に関してのループ for (i = 1; i <= 3; i++) { //「name_txt1~3」を選択可にする this["name_txt" + i].selectable = true; //「name_txt1~3」を選択したときに実行 this["name_txt" + i].onSetFocus = function() { //選択した名前を入れる変数に各名前を代入 select_name = this.text; }; } //ボタン「ok_btn」をクリックしたときに実行 ok_btn.onRelease = function() { //もし select_name が空白でなければ if (select_name != "") { //選択した名前を「window_txt」に加算表示 window_txt.text += select_name + "\n"; } }; --------------------- とりあえずこれくらいシンプルなものを作ってちゃんと動かしてみましょう。 またこれがちゃんと動かせたら 先にクリアしなければならない問題点がいくつも見えてくると思います。 【問題点の例】 ・「window_txt」の表示を消すにはどうすれば良いのだろうか? ・最後に選択したものだけを消す(選択しなおす)にはどうすれば良いのだろう? ・続けて「ok_btn」をクリックすると続けて同じ名前が表示されてしまうぞ。これはどう対処すべき? などなど…。 そういう細かな点を潰していくことを考えても シンプルなものをキッチリ作って動かすということが大切です。 「欲ばりすぎないように 確実に一歩ずつ」 です。
補足
いつもながら、妙なことばかりの質問で申し訳ございません。 「着実に~」というお言葉は胸に深く刻んでおきます。ごめんなさいです。 鮮やかな解説を賜り、心より感謝致しております。 上手に説明できませんでしたところを補足します。 その1)合計10フレームあります。 その2)各フレームに5つづつ、ダイナミックテキストがあります。 その3)全部違う名前です。 例)1フレーム目「たろう」「みつこ」「はなこ」「よしお」「ただし」 2フレーム目「じろう」「ふみえ」「ようこ」「しずか」「のびた」…と10フレーム これのどれかの名前を選び、選択ボタン確定させると別窓に名前が表示される、としたいのです。 ※確定後、別窓を消すには別フレームから作業をやり直すようにしますので、ここは大丈夫です。 同じ場所なのにフレームが違う場合だと(もしかすると) NフレームのX_txtという指定をするのでしょうか? 本当にすみませんです、自分のSkill以上の事ばかりで質問ばかり、ごめんなさいです。
- 76masa
- ベストアンサー率50% (8/16)
・1回目 表示窓.text = "たろう" ・2回目 表示窓.text = 表示窓.text + "?n" + "みつこ" こんな感じでしょうか? ?n は改行です。
補足
ご回答ありがとうございます。 なるほど、表示窓には「+」でつなげれば良いのですね。ありがとうございます。 では、ダイナミックテキストの取り扱いはどうしたら良いのでしょうか。 変数をつけるのか、インスタンス名をつけて引っ張ってくるのか…。 そこらへんのとても初級な部分が分からずにおります。 つまり「たろう」のダイナミックテキスト部の取り扱いはどうしたらいいのかが 分かっていないのでございます。ううう。
お礼
まさに!このとおりです!!(という質問の意味と回答が) すぐに試しました。 もちろん、確実な部分を1つずつ行いました。 すこぶる助かりました。いつもいつも毎度毎度助けていただき、感謝でいっぱいです。 ありがとうございます、助かりました。感謝。