- ベストアンサー
Flashで親MC内の複数の子MCのインスタンス名から数字を取得しマウスアクションをまとめて記述する方法
- Flashで、親MC内の複数の子MCのインスタンス名から数字を取得し、それぞれのマウスアクションをまとめて親MC内のフレームに記述する方法について教えてください。
- 試行錯誤の結果、以下のコードで問題を解決できました。ただし、this.Paraを代入するとthis['product'+this.Para]では動かなかったので、この点についても疑問があります。
- また、ルート上に階層を指定すると正常に動作することがわかりました。なぜ親MC内ではthis._parentという指定が必要なのかについても質問したいです。
- みんなの回答 (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() { } で良いのではないでしょうか? 実際に検証していないのでよくわかりませんが。
お礼
ご回答ありがとうございます! 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 を参考にさせていただいておりました。 まだまだ関数の使い方が見よう見まねで、理解できていなかったようです。 とても勉強になりました。 ありがとうございました!