トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     forの中の配列
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
テライユタカ
Åê¹ÆNo.24078
投稿日時: 2006-3-1 22:03
常連
居住地: わかやま
投稿: 88
使用環境:
iMac G5 10.4.9 + iBook G4 10.3.9 + Flash8
forの中の配列
forの中の配列で悩んでおります。

onLoad = function () {
  //配列
  myArray1 = new Array("A", "B", "C");
  myArray2 = new Array("D", "E", "F");
  for (i=1; i<=2; i++) {
    trace(this["myArray"+i+"[0]"]);
  }
  //変数
  text1 = "G";
  text2 = "H";
  for (i=1; i<=2; i++) {
    trace(this["text"+i]);
  }
}

traceの結果として
A
D
G
H
の結果が欲しいのですが
undefined
undefined
G
H
となってしまいます。
eval()を使用しても同じ結果です。
変数は希望通りの結果になるのですが、配列の場合が理解できていないのです。
アドバイスお願いできますでしょうか


----------------
TERAI YUTAKA
HomePage: SITE ALPHA

旭日ゆうほ
Åê¹ÆNo.24079
投稿日時: 2006-3-1 22:29
Bak@Fla名人
居住地: 心は岡山
投稿: 91
使用環境:
Windows Vista Home Premium
Flash MX2004 v7.2
Flex2 SDK
Flex3 SDK
FlashDevelop3.0.0 Beta7
Re: forの中の配列
こんばんは。

"[0]"を外に出してやれば無事出力するようです。

myArray1 = new Array("A", "B", "C");
myArray2 = new Array("D", "E", "F");
for (i = 1; i <= 2; i++)
{
	trace(this["myArray" + i][0]);
}


----------------
旭日ゆうほ
swf置いてます。AM902

野中文雄
Åê¹ÆNo.24080
投稿日時: 2006-3-1 22:59
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: forの中の配列
問題を切分けましょう。forステートメントは、おそらく関係がないと思われます。
引用:
テライユタカさんは書きました:
forの中の配列で悩んでおります。

var _array:Array = [1];
trace(this._array[0]);  // 出力: 1
trace(this["_array"][0]);  // 出力: 1
trace(eval("this._array")[0]);  // 出力: 1
trace(_array[0]);  // 出力: 1
trace(["_array"][0]);  // 出力: _array
trace(eval("_array[0]"));  // 出力: undefined

参考:「ドット演算子と配列アクセス演算子


----------------
 

テライユタカ
Åê¹ÆNo.24081
投稿日時: 2006-3-2 1:26
常連
居住地: わかやま
投稿: 88
使用環境:
iMac G5 10.4.9 + iBook G4 10.3.9 + Flash8
Re: forの中の配列
早速の返信ありがとうございました。

引用:
forステートメントは、おそらく関係がないと思われます。

ちょっとタイトルとサンプルがまずかったですかね。
  myArray1 = new Array("A", "B", "C");
  i = 1;
  trace(this["myArray"+i+"[0]"]);
がいまくいかなかったことと、変数の方はうまくできたこと、evalと[]の使い方はちょっとだけ理解できていることを伝えたかったのですが。
で、
引用:
"[0]"を外に出してやれば無事出力するようです。

が気づかなかった!!!
  trace(this["myArray"+i][0]);
に書き直すことで、うまくいきました。

ありがとうございました。


----------------
TERAI YUTAKA
HomePage: SITE ALPHA

野中文雄
Åê¹ÆNo.24084
投稿日時: 2006-3-2 16:31
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: forの中の配列
「まずかった」というのでなく、本質を変えずに、かつできるかぎりシンプルなかたちにして試すことが、問題の解決や理解には重要だと思います。

外部テキストファイルtest.txt:
myArray[0]=A

// フレームアクション
this.loadVariables("test.txt");
// ステージをクリックすると:
this.onMouseDown = function  () {
	trace(this["myArray[0]"]);  // 出力: A
	trace(eval("myArray[0]"));  // 出力: A
}
var myArray:Array = ["A"];

[ムービープレビュー]モードの[制御] > [変数のリストアップ]より引用:
変数 _level0.myArray = [オブジェクト #2, クラス 'Array'] [
 0:"A"
]
変数 _level0.myArray[0] = "A"

引用:
テライユタカさんは書きました:
ちょっとタイトルとサンプルがまずかったですかね。
myArray1 = new Array("A", "B", "C");
i = 1;
trace(this["myArray"+i+"[0]"]);

がいまくいかなかったことと、変数の方はうまくできたこと、evalと[]の使い方はちょっとだけ理解できていることを伝えたかったのですが。


----------------
 

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops