• 締切済み

forの中にいれたcreateTextの使い方

はじめまして、 内容をまとめて書いてあるテキストがあり、これを変数に入れて分割したものを画面に表示させたいのですが、表示するところがうまくいきません。 createTextの書き方がおかしいと思うのですがどこを書き換えればいいのかわかりません。 すいませんがどなたかお教え願えないでしょうか。 var text1=new LoadVars(); text1.load("test.txt") text1.onLoad=function(){   var test_array:Array=text1.split(",");   for(var i=0;i<test_array.length;i++){   this.createTextField("c"+[i],this.getNextHighestDepth(),50,20+i*20,200, 20); this.c[i].text =test_array[i]; } 多分thisのあたりがおかしいと思っているのですが、どう書けばいいのかわかっていません。 すいませんがどなたかお願いします。

みんなの回答

  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.3

#1&2です。 いや,またまたすみません。 var test_array:Array は LoadVarsインスタンスの中に作成されていますね。 this.createTextField("c"+[i],this.getNextHighestDepth …   ↓ 変更 ↓ _root.createTextField("c"+i,this.getNextHighestDepth … this.c[i].text =test_array[i];   ↓ 変更 ↓ _root["c"+i].text =this.test_array[i]; ではないかと思います。 #2の繰り返しになりますが, データなどがなく,現状やしたいことがわからないので,#1も#2も検証していません。 単に考えてみただけです。 LoadVarsからの相対パス指定は難しいことは確かです。

o_take001
質問者

お礼

返答ありがとうございます。 thisが便利だったのでそのまま使ってました。 Flashは初めてなのでそこらへんも勉強しながらやっていきたいと思います。 変数を適当に変えたり、どういう操作をしたいのか書かずに失礼しました。最近話題の某動画サイトのコメント機能を再現してみたいと思い少しづつ作っていました。 BlurFiltanさんに従って書き直してみたのですが、最後の結果しか表示されません。 例えば test_array[]に[a1,b2,c3]と3つが入っている場合 画面では  a1 b2 c3 といった風に表示させたいのですが、なぜかc3しか表示されないのですがこれはどこが間違っているのでしょうか。 よろしければどなたかお教え下さい。

全文を見る
すると、全ての回答が全文表示されます。
  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.2

#1です。 いや,すみません。 この場合の this は text1 になりますから, this.createTextField("c"+[i],this.getNextHighestDepth …   ↓ 変更 ↓ _root.createTextField("c"+i,this.getNextHighestDepth … this.c[i].text =test_array[i];   ↓ 変更 ↓ _root["c"+i].text =test_array[i]; のようになるのではないかと思います。 データなどがなく,現状やしたいことがわからないので,#1も#2も検証していません。 単に考えてみただけです。 LoadVarsからの相対パス指定は難しいことは確かです。

全文を見る
すると、全ての回答が全文表示されます。
  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.1

this.createTextField("c"+[i],this.getNextHighestDepth …   ↓ 変更 ↓ this.createTextField("c"+i,this.getNextHighestDepth … this.c[i].text =test_array[i];   ↓ 変更 ↓ this["c"+i].text =test_array[i]; ではないかと思いますが。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 外部のテキストを読み込んで数値として使う。

    下記のような内容のテキストファイルがあり 各行を各フレーム目のクリップのx座標y座標 に当てはめたいのです。 一フレーム目は(x,y)=10,10 5フレーム目は(x,y)=50,50 といった具合に テキスト(ppp.txt)の内容 10,10 20,20 30,30 40,40 50,50 60,60 70,70 80,80 90,90 メインのタイムラインに var load_lv:LoadVars = new LoadVars(); load_lv.load("ppp.txt"); load_lv.onData = function(s) { if (s.length > 0) { myFunction(s); } } function myFunction(s:String):Void { var lines:Array = s.split("\n"); for(i=1;i<9;i++){ var Array_1:Array = lines[i].split(","); clip_1._x = 5*Number(Array_1[0]); clip_1._y = 5*Number(Array_1[1]); } } これでは無理でした、、、 お願いします

    • ベストアンサー
    • Flash
  • FLASHでCSVを配列で読込後、読み込んだ配列を関数の外で使いたい。

    FLASHでCSVを配列で読込後、読み込んだ配列を関数の外で使いたい。 下記のスクリプトでCSVから配列を取り込みましたが、 関数の外で、「csvRows」変数の中身を見る方法が分かりません。。 var csvLoader = new LoadVars(); var theFileObj = new LoadVars(); var theFile = csvLoader.sendAndLoad("test.csv",theFileObj,GET ); var csvRows = new Array(); theFileObj.onData = function(src) { var theFileArray = src.split("\r\n").join("\n").split("\n"); var theFieldNames = theFileArray[0].split(","); var numberOfFields = theFieldNames.length; for(var j=0; j<numberOfFields; j++){ theFieldNames[j] = removeQuotes(theFieldNames[j]); } for(var i=0; i<theFileArray.length; i++){ var tempArray = theFileArray[i].split(","); csvRows.push(tempArray); } } function removeQuotes(theString){ if (theString.charAt(0) == '"' || theString.charAt(0) == "'") { return theString.substr(1, theString.length - 2); }else { return theString; } }

    • ベストアンサー
    • Flash
  • Flash 配列

    Flashでcsvファイルを読み込みんでいます。 ▼csvファイル中身 a,あんぱん,100(改行) b,食パン,180(改行) c,カリーパン,120(改行) ▼AS --------------------------------------------------------- var abc = new LoadVars(); var itemlist:Array = new Array(); abc.onData = function(data) { itemlist = data.split("\r\n"); if (itemlist[itemlist.length-1].length == 0) { itemlist.pop(); } for (var i:Number = 0; i<itemlist.length; i++) { itemlist[i] = itemlist[i].split(","); } } abc.load("book1.csv"); --------------------------------------------------------- 上記のASで読み込んだcsvファイルのデータを解析しています。 trace(itemlist[1][1]) で「食パン」を取り出したり出来ています。 ここで、 あんぱん,食パン,カリーパン と、3つの要素を持つ配列を作りたいのですが、 どうすればよいのでしょうか? pushやsliceを使用したのですが無知な為うまくいきませんでした (T_T;)

  • prototype.jsを使うとfor~inがバグる件

    下記について知っている人が居ましたら教えてください。 HTAでprototype.jsを使うとfor~inでバグります。 具体的に, prototype.jsを読み込んだ状態でfor~inして, for~inの情報を参照すると,値ではなくソースコードが表示されます。 prototype.jsを読み込ませない場合で,通常のようにfor~inして, for~inの情報を参照すると,問題なく値が参照できます。 OS環境とバージョンによって違うかもしれませんが,僕の環境では現象が発生します。 対策方法を知っている人がいましたら教えてください。 下記のソースを実行すると, バグらない場合は,次のように出力されます。 hoge piyo toge バグる場合は,次のように出力されます。 function(item, i) { i = isNaN(i) ? this.length : (i < 0 ? this.length + i : i) + 1; var n = this.slice(0, i).reverse().indexOf(item); return (n < 0) ? n : i - n - 1; } -略- { this._each(function(value) { iterator(value, index++); }); } catch (e) { if (e != $break) throw e; } return this; } hoge piyo toge prototype.js使用すると... ///////////////////////////////////// // sample.hta バグ <html> <head> <title>ツール</title> <script type="text/javascript" src="./prototype.js"></script> </head> <body onLoad="javascript:window.resizeTo(600,480)"> <script language="javascript"> {   // Iniイメージ   // [TEST]   // KEY1=hoge   // KEY2=piyo   // KEY3=toge   var section = "TEST";   var key = new Array("KYE1", "KYE2", "KYE3");   var data = new Array("hoge", "piyo", "toge");   // セクション   items = new Array();   items[ section ] = new Array();   // キー   for(var i=0;i<key.length;i++){     items[ section ][ key[i] ] = data[i];   }   // 参照   for(var j in items[ section ]){     document.write( items[ section ][ j ] + "<br />\n" );   }   delete key;   delete data;   delete items; } </script> </body> </html> prototype.js使用しないと... ///////////////////////////////////// // sample.hta バグらない <html> <head> <title>ツール</title> <!-- <script type="text/javascript" src="./prototype.js"></script> --> </head> <body onLoad="javascript:window.resizeTo(600,480)"> <script language="javascript"> {   // Iniイメージ   // [TEST]   // KEY1=hoge   // KEY2=piyo   // KEY3=toge   var section = "TEST";   var key = new Array("KYE1", "KYE2", "KYE3");   var data = new Array("hoge", "piyo", "toge");   // セクション   items = new Array();   items[ section ] = new Array();   // キー   for(var i=0;i<key.length;i++){     items[ section ][ key[i] ] = data[i];   }   // 参照   for(var j in items[ section ]){     document.write( items[ section ][ j ] + "<br />\n" );   }   delete key;   delete data;   delete items; } </script> </body> </html> prototype.jsを最後に読み込ませると... ///////////////////////////////////// // sample.hta バグらない <html> <head> <title>ツール</title> </head> <body onLoad="javascript:window.resizeTo(600,480)"> <script language="javascript"> {   // Iniイメージ   // [TEST]   // KEY1=hoge   // KEY2=piyo   // KEY3=toge   var section = "TEST";   var key = new Array("KYE1", "KYE2", "KYE3");   var data = new Array("hoge", "piyo", "toge");   // セクション   items = new Array();   items[ section ] = new Array();   // キー   for(var i=0;i<key.length;i++){     items[ section ][ key[i] ] = data[i];   }   // 参照   for(var j in items[ section ]){     document.write( items[ section ][ j ] + "<br />\n" );   }   delete key;   delete data;   delete items; } </script> <script type="text/javascript" src="./prototype.js"></script> </body> </html>

  • 単一のFlashに単一のテキストファイルで複数の内容

    単一のFlashに単一のテキストファイルで複数の内容を1画面で表示させたいのですが、うまくいきません。 状況としては、【kotei1】には表示されますが、【kotei2】【kotei3】【kotei4】にはundefindと表示されてしまいます。 OS:Windows7 Flash:CS4 AS2.0 以下がASになります。 タイムライン1(全てレイヤー別に作成) ■kotei4(Layer4) ■kotei3(Layer3) ■kotei2(Layer2) ■kotei1(Layer1) 各タイムラインAS ■kotei4 System.useCodepage = true; var my_lv:LoadVars = new LoadVars(); my_lv.onLoad = function(success:Boolean) { if (success) { kotei4.text = my_lv.name4; } else { trace("Error loading/parsing LoadVars."); } }; my_lv.load("name.txt"); ■kotei3 System.useCodepage = true; var my_lv:LoadVars = new LoadVars(); my_lv.onLoad = function(success:Boolean) { if (success) { kotei3.text = my_lv.name3; } else { trace("Error loading/parsing LoadVars."); } }; my_lv.load("name.txt"); ■kotei2 System.useCodepage = true; var my_lv:LoadVars = new LoadVars(); my_lv.onLoad = function(success:Boolean) { if (success) { kotei2.text = my_lv.name2; } else { trace("Error loading/parsing LoadVars."); } }; my_lv.load("name.txt"); ■kotei1 System.useCodepage = true; var my_lv:LoadVars = new LoadVars(); my_lv.onLoad = function(success:Boolean) { if (success) { kotei1.text = my_lv.name1; } else { trace("Error loading/parsing LoadVars."); } }; my_lv.load("name.txt"); ***name.txt*** &name1=固定1 固定1を表示しています。& &name2=固定2 固定2を表示しています。& &name3=固定3 固定3を表示しています。& &name4=固定4 固定4を表示しています。& ***テキストデータsample***

  • MovieClipLoaderってテキストは対象外?。

    以前、No.961443の#7DPEさんに教えて頂いた内容を基にScriptを記述していました。 下記のScriptにて4ファイルしか読み込み対象がないのにも関わらず、表示出来なかったり出来たりします。 <1フレーム> load_flg = 0; suffix_no = 0; temp = ""; this.loadVariables("control.txt" ); <3フレーム> if(latest_no == "") {  gotoandplay(2) ; } else {  suffix_no = latest_no ; } (latest_noはテキストファイルで指定している変数名) <4フレーム> if (suffix_no != 0) {  System.useCodepage = true;  this.loadVariables("log"+suffix_no+".txt");  var fileload:LoadVars = new LoadVars();  fileload.load(log"+suffix_no+".txt");  fileload.onLoad = function(success:Boolean) {   if (!success) {    load_flg = -1;   } else {    load_flg = 1;   }  }; } else {  load_flg = -1; } <6フレーム> switch (load_flg) { case 0 :  gotoAndPlay(5);  break; case 1 :  temp += fileload.test;  suffix_no--;  load_flg = 0;  gotoAndPlay(4);  break; case -1 :  disp_fld.text = temp;  format = new TextFormat();  format.tabStops = new Array(80, 380);  disp_fld.setTextFormat(format);  stop();  break; default :  break; } ちゃんと読込みの完了を待つロジックは実装しているのに、何故かちゃんと表示される時と何も表示されない時があるのです。何故でしょうか?。 ご存知でしたらご教授ください。 また、「MovieClipLoader」って使えませんか?。

    • ベストアンサー
    • Flash
  • 日数、時間指定で、変化させるスクリプト

    flashの時間指定についての質問です。 指定した時間(例:○○月○○日の○○時)に、roadMovieをさせたり, gotoAndPlay(フレームへ飛ばす) をさせたりする事は可能なんでしょうか? 今まで調べて見たところ、 http://okwave.jp/qa1901367.html (時刻によって読み込まれるファイルを変更)や、 http://oshiete1.goo.ne.jp/qa2098739.html(曜日指定でボタン表示) で、似たようなものを発見しましたが、 ”○○月○○日○○時に動きを指定” というスクリプトを見つける事は出来ませんでした。 月指定、分数指定まではこの際なくても良いと思っているのですが、 もし可能であれば、 1:○○日後の○○時に動作(roadMovie または gotoAndPlay) 2:○○時間後に動作  のどちらかのスクリプトを教えて頂けると幸いです。 時間取得方法は以下のスクリプトを使っています。 (...と思います。以下はサンプルからそのまま持って来たものです。申し訳ないのですが私はスクリプト初心者ですので、サンプルのコードはいじる事が出来ませんでした。) この時間取得方法を基準に上記の時間指定をしようと考えています。 var load_lv = new LoadVars(); load_lv.onLoad = function() { var array2 = this.date2.split("/"); var event2_date = new Date(parseInt(array2[0], 10), parseInt(array2[1], 10)-1, parseInt(array2[2], 10)); onEnterFrame = function () flashのバージョンは8です。

  • 外部テキストが読み込めません

    はじめまして 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"); ―――――――――――――――― 以上のようになっています。 わかる方いましたらよろしくお願いします。 質問初めてですので、今後のためにも言葉が足りなかったりしたら遠慮なく突っ込んでください。

    • ベストアンサー
    • Flash
  • LoadVarsによるデータの読み込み

    現在、簡易ペイントチャットのようなものを作っています。 ログファイル名がSimpleWebNote1、 ログの中身はxb_old=100,200,300,400 といった感じです。 ログを取得し、","で区切ってSimpleWebNote1という配列に格納したいので ↓のような処理をしています。 (ログは4つありますがすべて同じような処理) load_obj = new LoadVars(); load_obj.load( "SimpleWebNote1.txt" ); load_obj.onLoad = function(){ str = load_obj(bx_old); SimpleWebNote1 = str.split(","); } そして100回前までのログを再描画するために ↓のような処理をしています。 for (var i=0; i<=100; i++){ _root.lineStyle (3, 0x000000, 100); _root.moveTo (SimpleWebNote1[i], SimpleWebNote2[i]); _root.lineTo (SimpleWebNote3[i], SimpleWebNote4[i]); } ですが、画面には何も表示されず困っています。 どこか間違っているとしたら指摘してほしいです。 この部分ができたら完成なので本当にもどかしいです。

  • txtをloadしているswfをloadMovie

    いつも適切なご回答感謝しております。txtをloadしているswf1をswf2にloadMovieしています。個別のswf1はうまくいっていて更に一度めはswf1をloadMovieしているswf2がしっかりtxtを読み込んでいます。しかし、loadMovieしているswf2内で別のコンテンツに一度行ってそこに戻るとswf1のtxtの読込みがうまくいかずダイナミックテキストの文字がそのまま出力されてしまいます。何か良い方法はございますか? 【swf1】 stop(); //率の取得 // 読み込んだ個数カウンタの初期値を設定 var count = 0; // LoadVars インスタンスの作成 myLV = new LoadVars(); // 1つのファイルがロードされたとき myLV.onLoad = function(Success) { // 読み込みに成功したら if (Success) { // 個数カウンタの値に1を加算 _root.count++; // もし個数カウンタが3になれば if (_root.count == 3) { //ユーザ定義関数 showData を実行 showData(); } } } // myLV に外部データのロード myLV.load("a"+"_"+month+"."+"txt"); myLV.load("b"+"_"+month+"."+"txt"); myLV.load("c"+"_"+month+"."+"txt"); // ユーザ定義関数 showData() の定義 function showData() { // 配列 ritu の作成 var ritu = new Array(); ritu[0] = myLV.aa.split(","); ritu[1] = myLV.bb.split(","); ritu[2] = myLV.cc.split(","); // テキストの表示 aa.text = ritu[0][day-1]; bb.text = ritu[1][day-1]; cc.text = ritu[2][day-1]; } 【swf2】swf1のloadはOK、一度目のswf1のテキスト読込みはOKだが別のコンテンツへ行って戻るとテキストだけが読み込まれてない loadMovie("swf1.swf",**mc);

    • ベストアンサー
    • Flash