flashでタイピングゲームを作成しています。
問題を外部テキストファイルから一行単位で読み込み、
それを配列に保存し、ランダムで出力するという仕様です。
外部テキストファイルの読み込み方、一行単位での配列への保存がわかりません。
外部テキストファイル名 elang.txt
//////////中身//////////////
FOOT
HAND
HEAD
////////////////////////////
/////////読み込みソース//////////////////
i = 0; //ループ変数
elangword = new Array(); //配列
/////////////////////////////////////////
読み込みソースはここまでしかできていません。
問題出力ソースはできています。
外部テキストファイルの中身の変更、読み込みソースの
変更をしてもかまいませんので、どなたがご教授していただけたら幸いです。
どうかよろしく御願い致します。
補足
C言語の知識はある程度あります。
/////////開発環境/////////////////
windows xp sp2
Flash Mx
/////////////////////////////////
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
他の方のでも解決可能かと思います。
実験していないので、無責任なアドバイスですが、splitを使うのはどうでしょう?
読んだテキストを、nowLoadTextとして、
elangword = nowLoadText.split("\n")
としたら配列で入りませんかね。改行コードは\n以外でしたら別指定して下さい。
No.2
- 回答日時:
Flash でのテキストファイルの読み込みはC言語とは違い、文字列ではなく変数として読みます。
例えば、テキストファイルの内容が次のようになっていたとしますと。
test=テスト
これをC言語で読むと「test=テスト」という1つの文字列になってしまいますが、Flash では、変数 test が定義され、その中に「テスト」の文字列が格納されます。
& でつなげると、複数の変数を読むこともできます。例えば、
test1=テスト1&test2=テスト2
この場合は、test1 と test2 という2つの変数に、それぞれ「テスト1」と「テスト2」の文字列が格納されます。
このように、Flash でのテキストファイルは全て、変数として読み込むことになります。
配列変数は残念ながら読むことができないのですが、代わりに、文字列を指定の区切り文字で分割し、配列に格納するというスクリプトがあります。
読み込むテキストファイルは、
test=FOOT,HAND,HEAD
といった具合に、各文字列を” , ”などで区切っておきます。
テキストファイルから test を読み込み、String オブジェクトの split メソッドで加工すると、文字列を配列に1つずつ格納できます。
Flash はテキストファイル以外にも、JPEG 画像と swf ファイルを読み込むことができます。
どの外部ファイルを読む場合もそうですが、読み込みにかかる時間を考慮するようにしましょう。
外部からデータを読む LoadVars や loadMovie は、”○○ファイルを読み込め”の命令を出すだけです。読み込みが終わるまでスクリプトの実行がそこで止まるのではなく、次のスクリプトを実行しながら、その裏で読み込みが続行されます。
読み込みが終わらないうちに先に進むと、利用しようとした変数が未定義( undefined )になっていたり、画像やムービーが表示されないなど、バグの原因になります。
よって、読み込んだ変数や画像・ムービーを利用して何かをする場合は特に、読み込みの終了を待ってから先に進むことが重要です。
読み込みの終了を待つにはいろいろな方法がありますが、よく使われるのは、読み込みの終了を知らせるフラグを用意し、このフラグを監視して先に進むという方法です。
フラグの監視はフレームで行います。
ただし、フレームアクションは再生ヘッドがそのフレームに来た、その時1度しか実行されないので、いつか値が変わる、といった動作のフラグを監視するには工夫が必要です。
しかし、これは複数のフレーム間を行き来すれば、その都度フレームアクションは実行されるということですから、この特徴を利用します。フラグの監視には、よく使われる手法です。
読み込みに関するフレームの構成をまとめますと、次のような流れになります。
フレーム1:初期設定と読み込み
フレーム2:読み込み終了を待つためのダミー。何もしない
フレーム3:読み込みの終了を待って先に進む
テキストファイル「 elang.txt 」の中身を、
test=FOOT,HAND,HEAD
このような形で記述しておきます。区切りの文字は、半角( ASCII 文字)の文字であれば何でも構いません。
これを読み込み、各単語を配列 elangword に格納するスクリプトは、大体、次のようになります。
(↓このスクリプトをコピーして利用する場合は、各行頭の全角のスペースを、全て半角のスペースかタブに置き換えてください。このまま使うとシンタックスエラーになります)
・フレーム1に設定するスクリプト
//読み込み終了フラグ
//終了時true、それ以外はfalse
load_status = false;
//Shift-JISで読み込む
System.useCodepage = true;
//LoadVarsオブジェクトの生成と読み込み
load_obj = new LoadVars();
load_obj.load( "elang.txt" );
//読み込み終了時の処理
load_obj.onLoad = function( success )
{
//正常に終了した場合、完了を知らせる
if( success )
{
load_status = true;
}
};
onLoad は LoadVars.load での読み込みが終わった時に発生するイベントで、この時に実行する処理を関数として定義しておくことができます。
onLoad で定義する関数の引数 success には、読み込みが正常に終了した時に true 、失敗した時に false が渡されます。ここでは、正常終了時に終了をタイムラインに知らせる意味で、用意したフラグを true にしています。
なお、読み込むテキストファイルを、文字コード UTF-8 ( Unicode )形式で記録している場合は、
//Shift-JISで読み込む
System.useCodepage = true;
この部分は削除してください。文字化けの原因になります。
・フレーム3に設定するスクリプト
//読み込みが終了した場合
if( load_status )
{
//Stringオブジェクトの生成
str = new String( load_obj.test );
//読み込んだテキストを”,”で分割し、配列に格納する
elangword = str.split( "," );
}
//それ以外の場合は読み込みの終了を待つ
else
{
gotoAndPlay( 2 );
}
読み込みが終わると、読み込みを実行した LoadVars オブジェクトに変数が定義され、読んだデータはその中に入っています。上記の例では、load_obj に test という変数が定義されていて、その中身は
FOOT,HAND,HEAD
となっています。
これを、String オブジェクトで加工します。
String オブジェクトは、まず、操作する文字列を決めます。ここでは、load_obj.test に入っている文字列、ということになります。
split メソッドで、” , ”を区切りとして分割し、配列 elangword に1つずつ格納します。
elangword の中身は、
elangword[0] → FOOT
elangword[1] → HAND
elangword[2] → HEAD
となります。
区切り文字を” , ”にしますと、利用したい文字列の一部に” , ”がある場合でも、強制的にここで分断されてしまいます。
タイピング練習であまり使わない文字というと、水平タブ( \t )などではないでしょうか。
テキストファイルで水平タブを挿入する時は、\t ではなく、URLエンコード %09 で挿入します。
テキストファイルに
test=FOOT%09HAND%09HEAD
split では、
elangword = str.split( "\t" );
と記述すると、” , ”を使う文字列も分割されずに、配列に格納することができます。
長くなってすみませんでした。
不明な点がありましたら、補足してください。
No.1
- 回答日時:
C言語の知識があるのであれば、Flashが変数として
読み込めるようにelang.txtの内容を書き換えてみましょう。
私が適当に書いたプログラムです。
----------------------------------------------
#include<stdio.h>
main() {
char str1[256]; //一行読み込みの配列
char str2[256]; //テキスト整形の配列
FILE *fin=fopen("elang.txt", "r");
FILE *fout=fopen("elang_flash.txt", "w");
int i=0;
while(fgets(str1, sizeof str1, fin) != NULL) {
if(i==0) {
sprintf(str2,"elangword[%d]=%s", i, str1);
} else {
sprintf(str2, "&elangword[%d]=%s", i, str1);
}
fputs(str2, fout);
i++;
}
fclose(fin);
fclose(fout);
}
------------------------------------------------
ためしに実行してみたところ、
////////////////////
elangword[0]=FOOT
&elangword[1]=HAND
&elangword[2]=HEAD
////////////////////
の内容のテキストファイルが作成できました。
この形になるとLoadVarsオブジェクトを使用して
変数として読み込むことができると思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# [C言語] コメント文字列を無視して、数値データを読み込むプログラム部分について 5 2022/10/05 11:03
- C言語・C++・C# pythonで外部のファイルを読み込む際のエラー 2 2022/04/12 19:22
- C言語・C++・C# pythonのファイルの並びでの読み込みとリストについて 4 2022/04/13 03:52
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- C言語・C++・C# c言語の問題です 2 2023/07/21 10:51
- Excel(エクセル) PowerQueryに詳しい方教えてください(Office365) 1 2022/07/24 21:11
- Perl perlで2次元配列をサブルーチンに値渡しで渡す 5 2022/12/17 18:49
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- Java java 次の機能を有するメソッドを自クラスに作成し、実装したいです。 機能 名前判定機能 →名前が 3 2022/06/16 16:08
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
uwscでExcelに自動記入
-
Form内のselectを連動させるに...
-
new演算子について教えていただ...
-
この曲はなんでしょう?
-
pptxをPDFで保存すると、90%サ...
-
レジリエンス 変換キーが作動し...
-
adobe flashのページが一回で表...
-
potplayerについて質問です
-
arduino プログラムについて
-
chrome flash
-
FLASHの再生はできないのでしょ...
-
フラッシュゲームアーカイブ2
-
Flashコンテンツを使ったWebサイト
-
ダウンロードしたデジブックはa...
-
Flashplayerの運用について
-
VBAのコンボボックスの年月表示...
-
Windows10重い
-
パソコンのリカバリーについて
-
iPhoneです。 Adobeフラッシュ...
-
ロック画面に天気を表示したい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語 バッファについて。
-
C#でDLLファイル読み込みを行う...
-
C#でブラウザのタイムアウト処理
-
WebBrowserでgoogle検索するには?
-
空の音楽用CDーRだけが認識...
-
now loadingの作り方
-
ヤフオクの画像拡大機能が
-
パブリッシュ設定でflash playe...
-
カメラ画像 その他のエラー(0...
-
ルートとムービークリップの関...
-
GetPrivateProfileString変値
-
メールソフト「Mail」で送った...
-
Now Loading又は同じ動作を必ず...
-
外部swfファイルを予め読み込ん...
-
XMLを利用したFLASH画像ギャラ...
-
画像が一瞬とぎれてしまいます...
-
外部ファイルからのデータの読...
-
loadVariablesで読み込んだら文...
-
SQLが応答しなくなっているのか...
-
外部画像と音楽(MP3)の取り入れ方
おすすめ情報