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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     パスを通すときのルール[MX]
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
tomochan
Åê¹ÆNo.2116
投稿日時: 2003-12-13 0:54
半人前
居住地: サッポロ
投稿: 37
使用環境:
XP FLASH PRO CS5
パスを通すときのルール[MX]
パスの記述に変数を複数使う方法がわかりません
functionで渡された引数Nameとfor文で使われるiを以下のように
組み合わせてプロパティを取得しようとしました。

function swapS(Name){

	for(i = 1 ; i <= 150 ; i++){

		a = this[Name+"hit"+i]._x
                  trace(a)

	}
}


ものの見事にundefinedでした。
ほかにも this[name]["hit"+i]._xもundefinedでした。
this[]を使って間にドットを挟む場合どうしたらいいのでしょうか?
ここらへんのルールを教えていただけるとうれしいです。

バージョンはMXで
環境はWINXPです
近藤泰一
Åê¹ÆNo.2117
投稿日時: 2003-12-13 1:08
常連
居住地: 神奈川県
投稿: 112
使用環境:
Pro Pro
Re: パスを通すときのルール[MX]
どこへパスを通したいのでしょうか。

this[Name+"hit"+i]._x

は、「Name」が例えば"test"で、iが1のときは、

this.testhit1._x

になりますが、当然そう言うMCがなければundefinedになります。
指定しているMCを配置していないということではないでしょうか。
パスを通したいMCがどこにある何という名前なのか、
Flashの構造が分からないと何とも言えないと思います。


----------------
Condo Hirokazu
http://www.condo.fromc.jp/flash/

ゲスト
Åê¹ÆNo.2119
投稿日時: 2003-12-13 1:45
Re: パスを通すときのルール[MX]
例えば、"_root.test"ムービークリップの中の
[Name+"hit"+i]ムービークリップの"_x"にアクセスするのならば、
_root.test[Name+"hit"+i]._x

のように記述します。
Macromediaサポートのページには
this[]を使うように書かれてますので、
私もかなり混乱しましたが、
そのままthisを使用するのではなく、
該当のパスを使用してみてください。

これで万事解決!なはず…
森 巧尚
Åê¹ÆNo.2120
投稿日時: 2003-12-13 2:10
モデレータ
居住地: 宝塚
投稿: 650
使用環境:
.5/CS4/Safari3
XP+2000//IE6
Re: パスを通すときのルール[MX]
まずは、
trace(Name+"hit"+i);

などとして、作ったインスタンス名が正しいかを確認されてはどうでしょうか。
「this[インスタンス名]」というのは、「このムービークリップの階層にある[インスタンス名]という名前のムービークリップ」のことを指します。

だから、まずインスタンス名が間違っていたらundefinedになりますし、
インスタンス名が正しくても、その階層にそのインスタンス名を持つムービークリップがなければundefinedになります。

functionで指定するthisはその関数が定義されたムービークリップを指していますので、他の階層から呼び出していたりすると、thisの位置が思っているのと違う場所を指していることもあります。


----------------
森 巧尚
http://www.ymori.com

tomochan
Åê¹ÆNo.2123
投稿日時: 2003-12-13 3:10
半人前
居住地: サッポロ
投稿: 37
使用環境:
XP FLASH PRO CS5
Re: パスを通すときのルール[MX]
すいません舌足らず & 間違いでした。

  a = this[Name+".hit"+i]._x でした。

要するに

 Name = C_1
 i = 1

だったとして。

 this.C_1.hit1._x を取得したいわけです。
 
これをニュアンス的書きますと

 this.Name."hit"+i._x

と書いて取得したいのです。
これが引数Nameのみの場合

 this[Name]._x

と書けばいいのはわかるのですが 間にドットをはさむ場合に
 
 this[Name+".hit"+i]._x と書いた場合

文章的には C_1.hit1._x になってるはずなのですが
値を取得できません

この場合はどうしたらよいのでしょうか?


KURAGE
Åê¹ÆNo.2124
投稿日時: 2003-12-13 3:40
常連
居住地: 東京都
投稿: 199
使用環境:
Flash 4?8/Lite 1?2
2000/XP
OSX 10.3
qurage.net
AS2HTML
Re: パスを通すときのルール[MX]
this.Name."hit"+i._x を[]表記で表すと

 this[Name]["hit"+i]._x

となります。

従ってthis[Name]["hit"+i]._xの表記でundefinedが返ってくるのであれば、
インスタンス指定が間違ってるorインスタンスが存在しない等の理由が考えられますので

trace(Name+"hit"+i);
trace(this[Name]);
trace(this[Name]["hit"+i]);
trace(this[Name]["hit"+i]._x);

のようなスクリプトで
「インスタンスが存在するか」「インスタンス指定は間違っていないか」チェックしてみてはいかがでしょうか
tomochan
Åê¹ÆNo.2125
投稿日時: 2003-12-13 4:23
半人前
居住地: サッポロ
投稿: 37
使用環境:
XP FLASH PRO CS5
Re: パスを通すときのルール[MX]
ありがとうございます これで解決しました!

基本的にドットで区切る部分を[]で囲むと考えていいのですね?
いろいろと応用が利きそうなので試してみようと思います。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

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