
WindowsXPのProfessional環境でFlash Lite1.1を
使用しています。実現したい動作は以下です。
外部テキストファイルから取得したデータ(複数)を
画面に表示させてそれをボタン操作で上下に動かす。
<画面表示イメージ>
aaa
bbb
ccc
ddd
aaaからdddまでが外部から取得するデータです。
可変で表示数は増減します。
それを外部テキストから取得します。
動作ですが"8"キーを押下したときに、aaaとbbbが
逆転し、もう一回押すとaaaとcccが逆転します。
こうなります。
bbb
ccc
aaa
ddd
1.外部データの表示はテキストフィールドにはで
きています。(loadVariable使用)
2.データを動かすためにムービークリップをボタン
アクションで動作もできています。
上記1と2を合わせた動作が出来ません。
flashlite1.1ではテキストフィールドにインスタンス
名が付けられないので、動かすことが出来ないと考え
ています。
ならばとムービークリップにloadVariableを使って
読みこませようとしたら、どうもloadVariableとい
う関数は値を内部的に持てるだけで、表示させられ
る訳ではない、という事が判ってきました。
そこで詰まってしまったのです。
外部から取得したデータを表示→ボタン操作という
動きはflashlite1.1では出来ないのではと怪しみ始
めています。
ここの過去ログやgoogleで検索しても、このような
動きを検証しているものが見つけられませんでした。
携帯での動作を考えており、flashlite1.1を使用し
ています。
上記について知識のある方、または手がかりとなる
ホームページをご存知の方、回答頂けると助かります。
長々と記述して申し訳ありません。

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 のムービープレビュー
(デバイスは携帯)で確認しているだけです。
その点はご了承ください。
sassakunさん、丁寧な御回答有難うございます。
非常に参考になりました。
>>テキストフィールドもムービークリップに変換す
>>れば良いだけです。
まさしくその通りでした。最初に作成した物では矩形
ツールで作成したものをムービークリップに変換して
いました。
その状態で表示させようと躍起になっていたので、
値は変数として使えましたが、Flash画面上に表示
されない状況でした。
テキストツール→ムービークリップに変換したら、
値が表示されてボタンアクションで動作も出来ました
>>テキストフィールドの配置を入れ替えるのではな
>>くて,値だけを入れ替えるものではありませんか?
何故かこの考えは思いつきもしませんでした・・・
そうですね、値の受渡しで良かったんですね。。。
「パラメータ変化ではなく、実際に座標を動かすに
はムービークリップで!」という考えにとらわれて
しまいました。
ソース付での丁寧な御解説、非常に判り易かったです
しかも、evalの活用法まで記述して頂いたので、活用
しようと考えています。
重ね重ね有難うござました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
テキストボックスの中身をリセ...
-
VB6.0 でメニューを作りたいん...
-
ACCESSフォームで、入力から一...
-
VB.NETでパラメータクエリを使...
-
Excelのマクロについて!早急で...
-
RPG(AS400)の本、サイトってあ...
-
アクセスのフォームから検索を...
-
Flashで恋愛ゲームを作りたいの...
-
photoshopで書いた四角の枠の中...
-
VBScriptでMsgBoxのYesNoボック...
-
else if文の順序を変えることに...
-
四乗根を英語で言うと・・・
-
ADに参加していないPCからADサ...
-
static関数がmapファイルに載ら...
-
VBAで改行の入ったデータの正規...
-
シンボル化解除の方法
-
画像を一定時間ごとに切り替え...
-
画像の外部読み込みについて
-
【Photoshop】レイヤー効果の境...
-
ダブルクリックと2回クリックの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テキストボックスの中身をリセ...
-
変数に256文字以上のテキストを...
-
全てのテキストボックスをセル...
-
テキストボックスにセルの値を...
-
別のアプリケーションのテキス...
-
jTextAreaのカーソル操作について
-
POIでのテキストボックス作成に...
-
外部ファイルから取得したデー...
-
VB6.0 でメニューを作りたいん...
-
Flashにサイトを表示させたい
-
右クリックでデータの取り込み...
-
テキストが変更されたとき
-
HP作成中。一度訪れたページを...
-
ただただ無駄な
-
AccessVBA SQL テキスト型は...
-
VBScriptでエクセルを開き、
-
HTMLのtextbox類に文字を残す
-
時計の:を点滅させたい
-
MFCのスタティックテキストのコ...
-
ゲームの結果表示について
おすすめ情報