![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
はじめまして
FLASHをつい1週間まえからはじめました超初心者です。
こちらの過去ログをみてやってみたのですが、うまくいかなかったので質問させてください。
外部テキスト(test.txt)をLoadVarsクラスで読み込み、
その中の定義(text=…)をMC(インスタンス名はtext)に書き出したいのですが、何度やっても書き出せません。
アクションスクリプトは
―――――――――――――――――
System.useCodepage = true;
myLoadVars = new LoadVars();
myLoadVars.onLoad = function(bSuccess) {
if (bSuccess) {
_root.text = this.text;
}
};
myLoadVars.load("test.txt");
――――――――――――――――
以上のようになっています。
わかる方いましたらよろしくお願いします。
質問初めてですので、今後のためにも言葉が足りなかったりしたら遠慮なく突っ込んでください。
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_10.png?e8efa67)
No.1ベストアンサー
- 回答日時:
ムービークリップ自体(_root でも ボタンでも)に変数を代入しても,何も表示されませんよ。
つまり,
「外部テキストが読み込めません」ではなくて,
読み込まれているのですが,表示はされません。
取りあえずテキストを表示するには,テキストを表示するためのテキストフィールドが必要です。
また,
「text」というすでに意味を持った言葉(文字列)を,
インスタンス名や変数名に付けるのは避けましょう(やめましょう)。
まず,
「test.txt」の中身のデータを次のようにしておきます。
---------------------------
myData=あいうえお
---------------------------
Flash の作成ですが,
新規ドキュメントを作成して,とりあえず任意の名前で「test.txt」と同じフォルダに保存します。
そのFlashのステージ上に,
ダイナミックテキストのテキストフィールドを用意し,
そのテキストフィールドにインスタンス名を付けます。
この説明では, 「myText」 というインスタンス名を付けたとしておきます。
そして,レイヤーを追加して,
「myText」 というインスタンス名のテキストフィールドが存在しない方のレイヤー,
つまり新しく追加した方のレイヤーのフレーム1の空白キーフレームに,
次のように書きます(コピペ可能)。
----------------------------------------
System.useCodepage = true;
myLoadVars = new LoadVars();
myLoadVars.onLoad = function(bSuccess) {
if (bSuccess) {
// インスタンス名 myText のテキストフィールドに
// この LoadVars の変数 myData の値を代入
_root.myText.text = this.myData;
}
};
myLoadVars.load("test.txt");
----------------------------------------
ご質問で書かれているスクリプトの
// インスタンス名 myText のテキストフィールドに
// この LoadVars の変数 myData の値を代入
_root.myText.text = this.myData;
ここを変えただけです。
他は全く同じです。
>> その中の定義(text=…)を
>> MC(インスタンス名はtext)に書き出したいのですが、
ということなので,MC の中に表示するのでしたら,
MC の中にテキストフィールドが必要になります。
上の状態で,
インスタンス名 「myText」 のテキストフィールドを選択し,
右クリック→シンボルに変換で,ムービークリップに変換し,
そのムービークリップにインスタンス名を付けます。
この説明では,「myMC」 というインスタンス名を付けたとしておきます。
この場合のフレーム1の空白キーフレームに書くスクリプトは次のようになります。
------------------------------------------------
System.useCodepage = true;
myLoadVars = new LoadVars();
myLoadVars.onLoad = function(bSuccess) {
if (bSuccess) {
// インスタンス名 myMC の MC 内の
// インスタンス名 myText のテキストフィールドに
// この LoadVars の変数 myData の値を代入
_root.myMC.myText.text = this.myData;
}
};
myLoadVars.load("test.txt");
------------------------------------------------
同じく,
// インスタンス名 myMC の MC 内の
// インスタンス名 myText のテキストフィールドに
// この LoadVars の変数 myData の値を代入
_root.myMC.myText.text = this.myData;
ここの部分が違うだけで,
結局,最初に書いたスクリプトのこの行,
_root.myText.text
↓変更↓
_root.myMC.myText.text
に,myMC が入っただけです。
--- 変数名&インスタンス名について ------
変数名やインスタンス名にすでにあるスクリプトなどを使うと紛らわしく,時には誤作動を起こす場合もあるので,使用しない方が良いです。
それで, my などを付けて,絶対に既存のスクリプトには存在しない名前にすることがよくあります。
ご質問で,
スクリプト中に myLoadVars というインスタンス名を使用しているのもそのためです。
LoadVars には,すでに LoadVars クラスという意味がありますから,インスタンス名 として使用するのは避けた方が良いです。
ですから,特に myLoadVars というインスタンス名にする必要はありません。
よく見かける hoge とかでも良いのです。
hoge = new LoadVars();
hoge.onLoad = function(bSuccess) {
… 略 …
hoge.load("test.txt");
しかし hoge だと何に対する名前かわかりにくく,
たくさん出てくるとhogeは何だったかさっぱりわからなくなるので,
myLoadVars にしてあるのです。
引数 bSuccess もほとんど同じ理由です。
Success 自体はスクリプトにはありません。
したがって,
myLoadVars.onLoad = function(Success) {
としても,全く差し障りはありません。
しかし Success は英語として "成功" の意味を持ちます。
ですから,「Success がスクリプトである」と「見る人」が間違えてはいけないので,
bSuccess という全く意味の存在しない文字列にしてあるのだと思います。
回答ありがとうございます
早速やってみたところできました。
変数に意味のある単語は使わないようにしたほうがよかったんですね。
丁寧に教えていただきありがとうございました
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【VB.NET】別Formのボタンが押...
-
オブジェクトの重なり順の変更
-
「Me」を「Form1」にするとエラ...
-
インスタンスとポインタ
-
先読み画像を後で生成するMCの...
-
VB6.0のHideのバグ?
-
プログラミング、アーキテクチ...
-
VB6.0で、フォームから、別のフ...
-
VBScriptでMsgBoxのYesNoボック...
-
SNMPの標準MIBについて
-
flash lite1.1 ボタンについて
-
VB.NET2005 DataGridViewでレコ...
-
VBAで改行の入ったデータの正規...
-
onClipEvent(load)かhitareaの...
-
else if文の順序を変えることに...
-
テキストボックスにセルの値を...
-
バナーの枠を飛び出して動くア...
-
【ExcelVBA】ファイル名をセル...
-
縦横比率のを変えずに画像のサ...
-
RPG(AS400)の本、サイトってあ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【VB.NET】別Formのボタンが押...
-
VB6.0で、フォームから、別のフ...
-
DataTableの件数を取得したい
-
VB6.0のHideのバグ?
-
ActionScript2.0で画面スクロール
-
ダミーウインドウ
-
オブジェクトの重なり順の変更
-
プログラミング、アーキテクチ...
-
インスタンスとポインタ
-
画像を一定時間ごとに切り替え...
-
【FLASH】インスタンス名の一覧...
-
クリックしたインスタンスを削...
-
Python でシャットダウンのコマ...
-
フォームの生成と破棄
-
ウインドウハンドルとインスタ...
-
【ActionScript】コンボボック...
-
外部swfが表示されません
-
Flashの画面をJPEG画像にしてメ...
-
AS3.0でボタンで指定したフレー...
-
unityの教科書を読んでいて出て...
おすすめ情報