メイン FLASH目安箱【バグ報告・要望】 変数名にメソッド名やプロパティ名(予約語)が含まれてたらアウト? | 投稿するにはまず登録を |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
hanywa | Åê¹ÆNo.6710 投稿日時: 2004-4-28 19:48 |
新米 居住地: 兵庫 投稿: 10
使用環境:
Win2K,Flash MX2004 |
変数名にメソッド名やプロパティ名(予約語)が含まれてたらアウト? duplicateしたMovieClipのもつ変数の1つが突然消える現象に
出くわしました。 1.depulicateしたMovieClipに5つ変数を設定。 各変数に値を入れます。 このうち1つの変数名は"moveD"です。 "move"だとUIObject.moveと判断されますが、 後ろに"D"をつけて回避したつもりでした。 2.depulicateしたMovieClipをクリックすると Functionをよびだすように設定。 3.Function内でサウンドを鳴らし、同Function内で onSoundCompleteを使いサウンド終了後の処理を入れます。 すると、サウンドを鳴らす処理をしている間は そのセルがもっていた変数"moveD"に値が入っているのを traceを使い確認したのですが、onSoundCompleteの処理に 入ったと同時にtraceで"moveD"がundefinedとなりました。 他の4つの変数はtraceで確認できるので ターゲットパスが間違えている訳ではなさそうです。 で、もしやと思い、"moveD"を"goD"に変更したところ、 上記問題は発生しませんでした。 どうやら予約語(メソッド名やプロパティ名)が変数名に 含まれていると何らかのタイミングで不具合が起こるようです。 depulicateが関係あるのか、onSoundCompleteが関係あるのかは まだ絞りきっていません。 同様な経験をされた方はいらっしゃいませんでしょうか。 |
ゲスト | Åê¹ÆNo.6712 投稿日時: 2004-4-28 20:09 |
Re: 変数名にメソッド名やプロパティ名(予約語)が含まれてたらアウト? こんにちは。
いいえ、MovieClipクラスはUIObjectクラスを継承しません。むしろ逆です。 よって仰るような意味の「予約語」ではありません。 引用: このうち1つの変数名は"moveD"です。 本当に変数名を変更したらその不具合が確認できないのでしたら、何らかのバグかもしれません。良ければスクリプト自体を載せて頂くとありがたいです。 |
|
hanywa | Åê¹ÆNo.6717 投稿日時: 2004-4-28 21:56 |
新米 居住地: 兵庫 投稿: 10
使用環境:
Win2K,Flash MX2004 |
Re: 変数名にメソッド名やプロパティ名(予約語)が含まれてたらアウト? 「予約語」は付け焼刃な知識で書いたため間違えていたと思います。
申し訳ないです。 関連するスクリプト自体はかなりの量があり全部乗せるのは無理なので 呼び出し部分とFunctionの部分を一部割愛した状態でよいでしょうか。
これでmoveDのところをgoDにするとtraceで取れているのですが、 このままだと2回目(onSoundComplete後)のtraceで取れなくなっています。 いまためしに"moveD"を"Dmove"に変えたところ問題なく動きました。 "move"+"D"の場合が問題なようです。 |
ゲスト | Åê¹ÆNo.6718 投稿日時: 2004-4-28 23:38 |
Re: 変数名にメソッド名やプロパティ名(予約語)が含まれてたらアウト? やはりそのような不都合は確認されません。
怪しいのはインスタンス参照にeval()を使っている所です。eval()はスコープチェーンを辿るという点で配列アクセスと異なります。 おそらく一部割愛した部分に原因があると思います。配列アクセスでインスタンス参照をしてみたり、デバッガでコードを辿ったりしてみてはいかがでしょう。 以下、実行コード。
|
|
hanywa | Åê¹ÆNo.6761 投稿日時: 2004-4-30 13:35 |
新米 居住地: 兵庫 投稿: 10
使用環境:
Win2K,Flash MX2004 |
Re: 変数名にメソッド名やプロパティ名(予約語)が含まれてたらアウト? 検証してくださってありがとうございます。
確かにこのスクリプトでは問題なく動いています。 このスクリプトを元に、テストをしてみました。 まず、今自分が作っているものですが、クリックするMCは Depulicateして使うので、Depulicate元のMCに
_rootにあるFunctionの街頭部はコメントアウトします
これで動かしてもTraceの結果は同じです。 次にDepulicateで今のMCの名前を"Myz_mc"にし、_rootのFunctionに Depulicateする一文を書き加えます。
これで動かすとTraceに
と表示されます。 これだと変数名を"goD"に変えても同じ結果なんで、 私が行き詰まっている現象と異なるのですが、このような事になりました。 私のDepulicateの使い方がおかしいのでしょうか。 |
hanywa | Åê¹ÆNo.6766 投稿日時: 2004-4-30 13:49 |
新米 居住地: 兵庫 投稿: 10
使用環境:
Win2K,Flash MX2004 |
Re: 変数名にメソッド名やプロパティ名(予約語)が含まれてたらアウト? 引用:
未だにeval()の使い方がよくわかっていません。悪戦苦闘中です。 「迷える子羊の部屋」に行きたい気分です。 それに便乗して動作に関係ないところなのですが、 私が前に転載したFunctionのうちonSoundComplete付近のTraceで
と入れたらonSoundComplete内の trace(this[CName].goD); だけundefinedになってしまい頭が???状態です。 _root指定は今作っているムービーの性質上使えないので 相対パスに頼るしかないのですが・・・ |
野中文雄 | Åê¹ÆNo.6769 投稿日時: 2004-4-30 14:16 |
ちょんまげら 居住地: 東京 投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1) |
Re: 変数名にメソッド名やプロパティ名(予約語)が含まれてたらアウト? MovieClip以外のオブジェクト(Soundインスタンス)に定義した関数内では、thisが(Sound)インスタンス自身を参照します。これは、ターゲットを省略したデフォルト参照とは異ります。
引用: hanywaさんは書きました: |
野中文雄 | Åê¹ÆNo.6770 投稿日時: 2004-4-30 14:26 |
ちょんまげら 居住地: 東京 投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1) |
Re: 変数名にメソッド名やプロパティ名(予約語)が含まれてたらアウト? 引用:
hanywaさんは書きました: いつどこにどのようなtrace()ステートメントを記述しているのでしょうか? MovieClipの名前が変わりましたので、先のポストとはスクリプトも異なってくると思います。正しく書替えていなければ、当然undefinedが出力されます。 引用: これで動かすとTraceに |
hanywa | Åê¹ÆNo.6772 投稿日時: 2004-4-30 15:21 |
新米 居住地: 兵庫 投稿: 10
使用環境:
Win2K,Flash MX2004 |
Re: 変数名にメソッド名やプロパティ名(予約語)が含まれてたらアウト? 野中文雄さんは書きました:
引用: MovieClip以外のオブジェクト(Soundインスタンス)に定義した関数内では、thisが(Sound)インスタンス自身を参照します。これは、ターゲットを省略したデフォルト参照とは異ります。 ありがとうございます。Soundインスタンス自信を参照するのですね。 引用: MovieClipの名前が変わりましたので、先のポストとはスクリプトも異なってくると思います。 ごめんなさい。ご指摘いただいて自分がDepulicate時の onClipEventの動きについて誤った解釈をしていた事に気が付きました。 お二方、特にマツダ様は検証時間も割いていただいて本当に申し訳ないです。本当にすみませんでした。 |
ゲスト | Åê¹ÆNo.6774 投稿日時: 2004-4-30 17:31 |
Re: 変数名にメソッド名やプロパティ名(予約語)が含まれてたらアウト? 結局解決なさったのですか?
でしたら参考の為に、何処をどのように修正したのか教えていただくと有り難いのですが、、、。 引用:
|
|
(1) 2 » |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |
投稿するにはまず登録を | |