はじめまして
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");
――――――――――――――――
以上のようになっています。
わかる方いましたらよろしくお願いします。
質問初めてですので、今後のためにも言葉が足りなかったりしたら遠慮なく突っ込んでください。
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を探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・【お題】絵本のタイトル
- ・【大喜利】世界最古のコンビニについて知ってる事を教えてください【投稿~10/10(木)】
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
インスタンスとポインタ
-
CreateDialogについて
-
SharedObjectの使い方(長文です)
-
VBAで改行の入ったデータの正規...
-
photoshopで書いた四角の枠の中...
-
C# chart controlの透過について
-
多言語を混在できるか。
-
C言語でのマウスを移動とマウス...
-
UWSCのBTN関数について。
-
切り抜いた部分が動くアニメー...
-
(AS3)「var mc:MovieClip = new...
-
マウスオーバーで色が薄くなる...
-
PYTHONのtkinterについて
-
外部テキストのタグ
-
C言語でネットワーク範囲のIPア...
-
ACCESS2003 VBAテキスト編集
-
python ボタンを押すと複数の関...
-
VBScriptでMsgBoxのYesNoボック...
-
チェックボックスのテキストを...
-
Flash5:2つのGIF画像でシェイ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【VB.NET】別Formのボタンが押...
-
VB6.0で、フォームから、別のフ...
-
インスタンスとポインタ
-
DataTableの件数を取得したい
-
カーソルを手に変更
-
「Me」を「Form1」にするとエラ...
-
CreateDialogについて
-
SharedObjectについて
-
オブジェクトの重なり順の変更
-
プログラミング、アーキテクチ...
-
VB6.0のHideのバグ?
-
先読み画像を後で生成するMCの...
-
ボタンインスタンスの_nameプロ...
-
クラスのプロパティ一覧を列挙...
-
1000個のMCにa1~a1000のイン...
-
BitmapをIDで指定したい
-
ActionScript3.0で画面を揺らす...
-
Python でシャットダウンのコマ...
-
Win32 API ウィンドウ
-
MouseEventについて教えてください
おすすめ情報