• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:外部ファイルから取得したデータ表示して動かしたい)

外部ファイルから取得したデータを表示して動かす方法

このQ&Aのポイント
  • WindowsXPのProfessional環境でFlash Lite1.1を使用して、外部テキストファイルから取得したデータを画面に表示し、ボタン操作でデータを上下に動かす方法について教えてください。
  • flashlite1.1ではテキストフィールドにインスタンス名が付けられないため、データを動かす方法について詰まっています。loadVariableを使用してデータを読み込ませようとしましたが、表示させることができませんでした。
  • 携帯での動作を考慮し、flashlite1.1を使用しています。知識のある方や参考になるホームページがあれば、回答をお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#35109
noname#35109
回答No.1

??? なんか複雑に考えすぎてませんか? Flah Lite でも 普通の Flash でも, 表示されているデータを入れ替えるときは, テキストフィールドの配置を入れ替えるのではなくて, 値だけを入れ替えるものではありませんか? 外部テキストのテキストデータのファイル名を「data.txt」とし, その「data.txt」内のデータが ---------------------- myText1=aaa& &myText2=bbb& &myText3=ccc& &myText4=ddd ---------------------- であったとします。 フレーム1に次の2行を書きます ----------------------- loadVariablesNum("data.txt", 0); flag = 0; ----------------------- これで,_level0(_root) に「data.txt」のデータがロードされます。 そして,ステージ上には上から順に, 「myText1」 「myText2」 「myText3」 「myText4」という変数名のテキストフィールドを用意しておけば, それぞれに 「aaa」 「bbb」 「ccc」 「ddd」 が自動的に表示されます。 ボタンを用意して, そのボタンに ------------------------ on (release, keyPress "8") { if (flag == 0) { flaText1 = myText1; flaText2 = myText2; myText1 = flaText2; myText2 = flaText1; flag = 1; } else if (flag == 1) { flaText2 = myText2; flaText3 = myText3; myText2 = flaText3; myText3 = flaText2; flag = 2; } } ------------------------ と書けば, 1回目の キー8 では 「aaa」 と 「bbb」 が入れ替わり, 2回目の キー8 では 「aaa」 と 「ccc」 が入れ替わるので, 表示は bbb ccc aaa ddd となります。 その後の キー8 では無反応です。 =============================== 上記で普通は行けると思いますが, あえて,テキストフィールドを動かす場合の話です。 >> flashlite1.1ではテキストフィールドにインスタンス >> 名が付けられないので、動かすことが出来ないと考え >> ています。 なぜ…? どうしてそういう風に考えるのでしょう。 付かなければ付くようにすば良いだけですよ。 普通の Fash でも, シェイプ(単なる絵) に インスタンス名 を付けたければ ムービークリップ にします。 それと同じで, テキストフィールドもムービークリップに変換すれば良いだけです。 ただ, ムービークリップにした場合, 普通のFlashと同じで少し階層が難しくなることと, ロード待ちを入れないとならないところが面倒です。 まず, 「mcText」という変数名のテキストフィールドを用意します。 それを ムービークリップ に変換します。 そして,そのテキストフィールド入りの ムービークリップ をコピペで4つにします。 そして,縦にならべて上から順に, 「myMC1」 「myMC2」 「myMC3」 「myMC4」 というインスタンス名を付けます。 フレーム1にロードするスクリプトのみを書きます。 -------------------------------------- loadVariablesNum("data.txt", 0); -------------------------------------- これで,_level0(_root) に「data.txt」のデータがロードされます。 フレームを2つ追加して,全体で3フレームにします。 2フレーム目をキーフレームにして,次のようなスクリプトを書きます。 -------------------------------------- /myMC1/:mcText = myText1; /myMC2/:mcText = myText2; /myMC3/:mcText = myText3; /myMC4/:mcText = myText4; -------------------------------------- 3フレーム目もキーフレームにして,次のようなスクリプトを書きます。 --------------------------- if (myText4 eq "") { gotoAndPlay(2); } else { stop(); } --------------------------- これで, 「myMC1」~「myMC4」までに 「aaa」~「ddd」が表示されますから, あとは自由に動かしてください。 loadVars が使えないので, ロード待ち処理が少しやっかいになるだけです。 完全にロードが終わるまで,フレームをループさせています。 でもそれだけのことで,loadVars よりはわかりやすいと思います。 フレーム2 のスクリプトですが, いちいち1変数を1変数に代入していっています。 もっと変数が多い場合は, eval を使用して for文で回しても良いです。 ↓ -------------------------- for (i=1; i<=4; i++) { set("/myMC" add i add "/:mcText", eval("/:myText" add i)); } -------------------------- 以上です。 変数の値を入れ替える方法でも, テキストフィールドの座標を変える方法でも, どちらでもできます。 ※私は,携帯というものを持っていないので   実際の携帯では動作確認をしていません。   上の確認は,Flash のムービープレビュー   (デバイスは携帯)で確認しているだけです。   その点はご了承ください。

nec_0508
質問者

お礼

sassakunさん、丁寧な御回答有難うございます。 非常に参考になりました。 >>テキストフィールドもムービークリップに変換す >>れば良いだけです。 まさしくその通りでした。最初に作成した物では矩形 ツールで作成したものをムービークリップに変換して いました。 その状態で表示させようと躍起になっていたので、 値は変数として使えましたが、Flash画面上に表示 されない状況でした。 テキストツール→ムービークリップに変換したら、 値が表示されてボタンアクションで動作も出来ました >>テキストフィールドの配置を入れ替えるのではな >>くて,値だけを入れ替えるものではありませんか? 何故かこの考えは思いつきもしませんでした・・・ そうですね、値の受渡しで良かったんですね。。。 「パラメータ変化ではなく、実際に座標を動かすに はムービークリップで!」という考えにとらわれて しまいました。 ソース付での丁寧な御解説、非常に判り易かったです しかも、evalの活用法まで記述して頂いたので、活用 しようと考えています。 重ね重ね有難うござました。

関連するQ&A

専門家に質問してみよう