メイン コーダーズルーム【スクリプト系】 二次元配列への値の設定 | 投稿するにはまず登録を |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
machu | Åê¹ÆNo.2928 投稿日時: 2004-1-16 2:48 |
新米 居住地: 投稿: 12
使用環境:
.3.2 |
二次元配列への値の設定 こんにちは、machuです。
たびたびお世話になります。 2次元配列に、インデックスを変数で指定して値を設定したいのですが、出来ません。traceしても何も表示されない状態です。 変数の宣言の際に、あらかじめ0を設定しておくと(clp= new Array([0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0],…)のように)、想定通りのカウント数が、配列に設定されます。ですが、実際は配列の長さは一定にはならないので、上記のような方法で初期値を設定する方法はさけたいのです。初期値を設定しないと、値って代入できないのでしょうか? 初歩的な質問ですいません。 参考までに、ソースを添付します。 処理の内容は、num個(書き込まれたら増えていく)の書込みメッセージの文字列を比較して、同じ文字がいくつあるかカウントするというものです。 function matchChar(num){ clp= new Array(); for(iA=0;iA<num;iA++){ mesA=mes_txt.text; lenA=mesA.length; for(iB=0;iB<num;iB++){ mesB=mes_txt.text; lenB=mesB.length; clp[iA][iB]=0; if(iA != iB){ for(n=0;n<lenA;n++){ figA=mesA.charCodeAt(n); if(rangeS < figA){ if(figA<rangeE){ for(m=0;m<lenB;m++){ figB=mesB.charCodeAt(m); if(figA==figB){ clp[iA][iB]++; } } } } } } } } } |
machu | Åê¹ÆNo.2929 投稿日時: 2004-1-16 4:24 |
新米 居住地: 投稿: 12
使用環境:
.3.2 |
Re: 二次元配列への値の設定 ごめんなさい。子羊の部屋に投稿しようとして間違えました……。
|
笠居トシヒロ | Åê¹ÆNo.2933 投稿日時: 2004-1-16 9:46 |
マスター 居住地: 兵庫 投稿: 870
使用環境:
SnowLeopard, Safari4, CS4 Windows7, IE8, CS4 |
Re: 二次元配列への値の設定 引用:
machuさんは書きました: いえ、この部屋で質問するのが適切だと思いますので、このままにしておきますね。 こういった「カテゴリ」がハッキリしている質問の場合は、ご自分のレベルより、 質問の性格で投稿場所を選んで下さったほうがいいですよ。
|
野中文雄 | Åê¹ÆNo.2935 投稿日時: 2004-1-16 10:16 |
ちょんまげら 居住地: 東京 投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1) |
Re: 二次元配列への値の設定 2次元配列を、どのように作成されているのでしょうか?
引用: machuさんは書きました: 値を未定義(undefined)にしておけばよいのではないですか? 配列に、初期値を入れる必要はありません。しかし、配列の初期化は必要です。 引用: 変数の宣言の際に、あらかじめ0を設定しておくと(clp= new Array([0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0],…)のように)、想定通りのカウント数が、配列に設定されます。ですが、実際は配列の長さは一定にはならないので、上記のような方法で初期値を設定する方法はさけたいのです。初期値を設定しないと、値って代入できないのでしょうか? 初歩的な質問ですいません。 スクリプトやムービーに前提があるときは、それもご説明ください。たとえば、以下のスクリプトでは、スクリプトと同じタイムラインにTextFieldインスタンスmes_txtが必要と思われます。スクリプトの記述されているタイムライン、アクションの種類(MovieClip/Button/フレーム)なども、ご記載ください。とくに、正しく動作しないスクリプトの解析は、むしろ困難な場合が少なくありません。 また、今回は配列の作成が問題だという絞込みはできているのですから、その部分のみ切分ければ、2?3行のスクリプトで原因の追及はできると思われます。
// [デバッグ]>[変数のリストアップ] 変数 _level0.clip = [オブジェクト #1, クラス 'Array'] [ 1:1, 2:[オブジェクト #2, クラス 'Array'] [ 0:2, 1:3, 2:4 ] ] 引用: 参考までに、ソースを添付します。 以下は、m×nの配列を初期化する関数のサンプルスクリプトです。たとえば、2×5の配列は、つぎのように作成します。 // 関数と同一のタイムライン my_array = xMultiArray(2, 5); trace(my_array.length); // 出力: 2 sub_array = my_array[0]; trace(sub_array.length); // 出力: 5 値はすべて未定義(undefined)に設定されます。しかし、第2引数を無指定にすれば、サブ配列の長さは0に設定されます。 my2_array = xMultiArray(5); trace(my2_array.length); // 出力: 5 sub2_array = my2_array[4]; trace(sub2_array.length); // 出力: 0
上記関数は、ifアクションの判定をforループの外に記述した方が、処理としては効率的です。ただ、スクリプトが長くなるので、このようにしました。 |
machu | Åê¹ÆNo.2961 投稿日時: 2004-1-16 21:58 |
新米 居住地: 投稿: 12
使用環境:
.3.2 |
Re: 二次元配列への値の設定 machuです。
問題解決しました。ありがとうございます。 引用: 配列に、初期値を入れる必要はありません。しかし、配列の初期化は必要です。 初期化は必要なのですね。 初期化の方法がよくわからなかったので、サンプルスクリプトを書いていただいて参考になりました。 |
machu | Åê¹ÆNo.2962 投稿日時: 2004-1-16 21:59 |
新米 居住地: 投稿: 12
使用環境:
.3.2 |
Re: 二次元配列への値の設定 二重送信してしまいました。
昨日から、投稿ミスを続けて申し訳ありません。 削除してくださると、助かります。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |
投稿するにはまず登録を | |