• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:取得した変数の階層について)

Flashで親MC内の複数の子MCのインスタンス名から数字を取得しマウスアクションをまとめて記述する方法

このQ&Aのポイント
  • Flashで、親MC内の複数の子MCのインスタンス名から数字を取得し、それぞれのマウスアクションをまとめて親MC内のフレームに記述する方法について教えてください。
  • 試行錯誤の結果、以下のコードで問題を解決できました。ただし、this.Paraを代入するとthis['product'+this.Para]では動かなかったので、この点についても疑問があります。
  • また、ルート上に階層を指定すると正常に動作することがわかりました。なぜ親MC内ではthis._parentという指定が必要なのかについても質問したいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.1

 this["product"+i].onRollOver = function() { } の { } 内で使う this は, this["product"+i] を指します。 つまり product0 ~ product9 です。 以下は代表として product0 の場合を考えます。 product0 の場合これ↓は,  this._parent["product"+this.Para].onEnterFrame = function() { } 次のような意味になります。  product0._parent.product0.onEnterFrame = function() { } つまり,  product0.onEnterFrame = function() { } です。 ----------------------- 一方,  this["product"+this.Para].onEnterFrame = function() { } と書いたならば,  product0.product0.onEnterFrame = function() { } という意味になります。 product0 の中に product0 があれば,何か動作すると思いますが, おそらくないので,何も動作しません。 ----------------------- 思うのですが, 親に上がってまた子(自分)に下がるという書き方ではなくて,  this.onEnterFrame = function() { } で良いのではないでしょうか? 実際に検証していないのでよくわかりませんが。

hana_oreo
質問者

お礼

ご回答ありがとうございます! for (i=1; i<10; i++) { this["product"+i].onRollOver = function() { this.onEnterFrame = function() { this._alpha -= this._alpha/2; }; }; } で、無事作動しました。MCが自分自身のときはthisでよいのですね! 例えばproduct"+iではなく、別のMC(例えばmc1~mc9)をコントロールしたい時は iを this["product"+i].Para = i; のように、別の変数に代入する必要があったのですね。 そこは http://oshiete1.goo.ne.jp/qa3347020.html を参考にさせていただいておりました。 まだまだ関数の使い方が見よう見まねで、理解できていなかったようです。 とても勉強になりました。 ありがとうございました!

関連するQ&A