with(list_all["shopName"+i]) {
swfName = _root.shopDATE[swfNum][2];
shopName.text = _root.shopDATE[swfNum][2];
_y += 20*i;
}
とすればlist_all["shopName"+i].shopName.textにはキチンとデータが
入るのでlist_all["shopName"+i].swfNameにもデータが入っていると
思い込んでいたのですがundefindでした。
ちなみに_yはキチンとlist_all["shopName"+i]._yに効いています。
list_all["shopName"+i]では無く記述しているターゲット上にswfNameを
作りやがった。

list_all["shopName"+i].swfName = _root.shopDATE[swfNum][2];
とwith()を使用せずに一応回避。

う〜ん、根本的にwith()の解釈を間違えているのでしょうか?
with(hoge) {
rakeem = "test";
}
だとhoge.rakeem = "test"じゃなく
rakeem = "test"・・・。

今日はこの現象?に4時間位やられていました・・・。
情けない、誰か理解出来るように教えてください。


解決策が思いつかない。
取り合えず
var target = list_all["shopName"+i];
と言うカタチで現状維持。

FLASH-JPで質問した結果、原因が分かったので抜粋します。

with アクション内に変数を設定するには、with アクションの外側で変数を宣言しておくか、
変数を設定するタイムラインへのフ ルパスを入力する必要があります。変数を宣言せずに
with アクションに設定すると、with アクションはスコープチェーンに 従って値を検索します。
変数がまだ存在しない場合、with アクションが呼び出されたタイムライン上に新しい値が設定されま す。

僕のはMCのwithアクションの外側で変数を宣言していなかったのが原因ですね。
かなり初歩的なミスです、これに何時間もかけていたのがあほぅです。
ヘルプをしっかり見ないと駄目と言う事ですね。

withアクションはクセあるらしいのでおすすめされませんでした。
接尾辞が有効なオブジェクトについては、短い変数名に代入した方が、コードヒントも使えて便利と
教えてもらいました。

_mc = rakeem.rakeem2;
_mc.swfName = _root.shopDATE[0];

参照:FLASH-JP with()について。

Comments
Post a comment









Remember personal info?