hitTestのロールアウト判定

このQ&Aのポイント
  • auのスライド式メニューについて
  • ボタンが重なり合った領域でマウス操作すると手前のインスタンスしかイベントを受け取れない
  • 余白のある左側に出た場合はrollOut処理が働くが、余白のない「上、右、下」に出た場合に処理が働かない
回答を見る
  • ベストアンサー

hitTestのロールアウト判定

auのスライド式メニューなんですが、あれってボタンの中にボタンが入っていますよね?過去記事を読んだところ、「ボタンが重なり合った領域でマウス操作すると手前のインスタンスしかイベントを受け取れない」ので「hitTestを使う」とありました。ただ、ちょっと問題が・・ --問題点--- _________________________ |      |mc|mc|mc|mc| |  余白  | | | | | |      | | | | |  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ こんな感じなんですが、swfに余白のある左側に出た場合はrollOut処理が働くのですが、余白のない「上、右、下」に出た場合に、処理が働かないんです。on()で記述した場合にはどの方向からでもrolloutするのに何故ダメなのでしょうか? --ActionScript--- onClipEvent (load) {  totalNum=4;leftX=20;rightX=320;mcPos=rightX;speed=5;  function mcSet(myNum){   var i=1;   while(i<=myNum){_parent["cont"+i+"_mc"].setMove("left");i++;}   while(i<=totalNum){_parent["cont"+i+"_mc"].setMove("right");i++;}  }  function setMove(dir) {   if(dir=="left"){mcPos=leftX;}else if(dir=="right"){mcPos=rightX;}   this.onEnterFrame=xMove;  }  function xMove(){   nextX=this._x+(mcPos-this._x)/speed;   if(Math.abs(mcPos-nextX)>0.1){this._x=nextX;   }else{this._x=mcPos;this.onEnterFrame=undefined;}  }  function init(){   var i=1;   while(i<=totalNum){    _parent["cont"+i+"_mc"].setMove("right");i++;   }  } } onClipEvent(enterFrame){  if(this.hitTest(_root._xmouse, _root._ymouse, true)){this.mcSet(1);}else{init();} }

  • coder
  • お礼率68% (13/19)
  • Flash
  • 回答数2
  • ありがとう数2

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

  • ベストアンサー
noname#35109
noname#35109
回答No.2

#1です。おはようございます。 > このように書いたら、小さいボタンに移ったときに > ダイナミックテキストのエリアに判定結果rollOutが入っちゃったんですよね。 そうでしょう。rollOutになると思います。 それだから,上に乗った小さなボタンにも,同じスクリプトを書いて動作を続行させれば良いのです。 つまり,この部分。 on (rollOver) { _root.onEnterFrame = function() { _root.cont1._x += (150-_root.cont1._x)*0.8; }; この部分は下の大きなボタンにも上の小さなボタンにも共通部分です。 下の大きなボタンをrollOutしても,小さなボタンにrollOverするので,小さなボタンが,x座標150に近づくようなスクリプトを続行させます。 > これってレイヤー分けても意味ないのでは・・・ おっしゃるとおり,スクリプト上は分ける必要はないです。 同じレイヤーで上に小さなボタンが乗っていてもまったくOKです。 作成するときの管理の問題です。 もし大きいボタンの下に小さなボタンが隠れてしまったら,それを上に持ってくるのに手間だから,レイヤーを分けているだけです。 また,先に大きなボタンを作ってしまった場合,同レイヤーで,その上に小さなボタンを作成するのは不可能でしょう。 また動かしたくないレイヤーはロックをかけておけば,間違って動かすこともないですし,作成上の都合だけです。 それと,スクリプトで動かす場合はレイヤーをさほど意識しなくても良いですが, モーショントゥイーンなどで動かすときは,1つの動く部分につき1レイヤーに決まっています。 1つのキャラクターに複雑な動きをさせる場合,胴体レイヤー,頭部レイヤー,右手レイヤー,顔レイヤー,右目レイヤー… など全ての別々のパーツで別々のレイヤーにしないとなりません。 マスクレイヤーなども含めると,Aキャラに20レイヤー,Bキャラに20レイヤー。それでやっとABキャラが会話する。 というアニメーションができるというケースがけっこうにあります。 だからレイヤーは分ける習慣がついているので,分けたという面もあります。 > マジですか?「最初に書いたスクリプト」って、on(rollOver)ではなく、 > hitTestでロールオーバー状態をmcに作ったやつですよね? スススス,すみません。 書き方が悪かったです。そういう意味ではなく, 下レイヤーの「cont1本体MC」には, -------------------------------------- onClipEvent (load) { _root.cont1._x = 250; } on (rollOver) { _root.onEnterFrame = function() { _root.cont1._x += (150-_root.cont1._x)*0.8; }; } on (rollOut, dragOut) { _root.onEnterFrame = function() { _root.cont1._x += (250-_root.cont1._x)*0.8; }; } -------------------------------------- 上レイヤーのボタンには -------------------------------------- on (rollOver) { _root.onEnterFrame = function() { _root.cont1._x += (150-_root.cont1._x)*0.8; }; } on (release) { getURL("○○.html"); } -------------------------------------- とした場合,この cont をステージの上にぴったり引っ付けても,rollOut は認識しましたよと言うことです。

coder
質問者

お礼

sassakunさん、色々ありがとうございました。 ↑で追加で質問した事は、今後本で調べたりとかして考えてみます。

coder
質問者

補足

遅くなりすいません。 >上に乗った小さなボタンにも,同じスクリプトを書いて動作を続行させれば良いのです あ~、なるほど。そういうことだったんですか。ある意味、逆転の発想ですね。 -------------------------------------------------- >cont をステージの上にぴったり引っ付けても,rollOut は認識しました そうなんですよね。on(rollOut)ならするんですよね。 だけどhitTestではしなくて・・・・ なんでhitTestだと余白のないところから出たときにrollOutしなかったんでしょうか? 僕の書き方が悪かったのでしょうか?それともhitTestってそういうものなんですか?

その他の回答 (1)

noname#35109
noname#35109
回答No.1

auのページ見ました。 >> auのスライド式メニューなんですが、あれってボタンの中にボタンが入っていますよね? そういう見方もできますが, 私はそう見えません(そう考えません)。 なぜかと言うと,そう取ると面倒くさいからですσ(^_^;)。 面倒くさがりやなんですよ。 私だったらこう考えます。 1つのタブみたいなMCに「cont1」というインスタンス名を付けるなら, その「cont1」内を上下2レイヤーにして,下の図のように配置します。  ┌cont1(インスタンス名)────┐  │上レイヤー… ボタン1 ボタン2 │  │下レイヤー… cont1本体MC   │  └──────────────┘ 下レイヤーの「cont1本体MC(仮称:インスタンス名ではない)」が大きくて,cont1全体に広がっているMCです。 ボタン(MC)の中にボタン(MC)があるのではなく,大きいボタン(MC)の上に小さなボタン(MC)が乗っている感じです。 複数のcontが存在するので,ややこしいですからcontは1つであったとすると, 下レイヤーの「cont1本体MC」には, -------------------------------------- onClipEvent (load) { _root.cont1._x = 250; } on (rollOver) { _root.onEnterFrame = function() { _root.cont1._x += (150-_root.cont1._x)*0.8; }; } on (rollOut, dragOut) { _root.onEnterFrame = function() { _root.cont1._x += (250-_root.cont1._x)*0.8; }; } -------------------------------------- 上レイヤーのボタンには -------------------------------------- on (rollOver) { _root.onEnterFrame = function() { _root.cont1._x += (150-_root.cont1._x)*0.8; }; } on (release) { getURL("○○.html"); } -------------------------------------- のようなことを書きます。250やら0.8は適当に書きました。 ボタンみたいなのでボタンにしていますが,実際はMCに書いた方がこの場合は発展性があると思います。 onEnterFrameの前の<オブジェクト>は,一応,_root という共通なオブジェクトにしています。 でないと,onEnterFrame どうしがぶつかると思います。 もちろん,「cont」は複数あるので, 動くスピードや座標などは変数にしておいて,実行する方が良いですが, 説明をシンプルにするために上のようなスクリプトにしてみました。 実際auのようにするには,これらMCに直接,動くスクリプトは書かず, 管制塔のような別のMCを作って,その中に動くスクリプトは書き, 「時間経過」で動く場合と「rollOver」で動く場合を共通スクリプトにして, 両方の場合を振り分けるとは思います。 例えば「cont1本体MC」にはFlagAとBを立てるだけのスクリプト  on (rollOver) {   _root.flagA=1; //時間とマウス振り分け用Flag   _root.flagB=1; //contポジション移動用Flag  }  on (rollOut, dragOut) {   _root.flagA=0;   _root.flagB=0;  } みたいなものを書いておいて,管制塔みたいなMCには  this.onEnterFrame = function() {   もし,_root.flagA==0 だったら,{    ○秒に1回 flagBに1を加え続ける   }else もし,_root.flagB==0 であれば,{    全てのcontを 最初の位置に戻す。   }else もし,_root.flagB==1 であれば,{    それぞれのcontをどこどこ1に動かす。   }else もし,_root.flagB==2 であれば,{    それぞれのcontをどこどこ2に動かす。   }     … … …   } みたいなことを書くと思うということです。 >> 余白のない「上、右、下」に出た場合に、処理が働かないんです。 >> on()で記述した場合にはどの方向からでもrolloutするのに何故ダメなのでしょうか? 最初に書いたスクリプトで余白なしのものを作って実行してみましたが, SWFのボタン(MC)領域から直接HTML領域に「rollout」してもちゃんと「rollout」は認識され,中のスクリプトは実行されましたよ。

coder
質問者

補足

ご丁寧な回答ありがとうございます。よく分からないので、2点質問させてください。 まず >大きいボタン(MC)の上に小さなボタン(MC)が乗っている感じにする に関してなんですが、ここ良く分からないです。下のようなswfを試してみたんです。 「ダイナミックテキスト(判定結果表示)」 | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄| |  大きいボタンmc      | | | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄| | | | | ̄小さいボタンmc ̄| | | | |   ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ | | | |____________| | |_______________| ----大きいボタンmcのScript------ on(rollOver) { _root.judg = "rollOver"; } on (rollOut) { _root.judg = "rollOut"; } このように書いたら、小さいボタンに移ったときにダイナミックテキストのエリアに判定結果rollOutが入っちゃったんですよね。これってレイヤー分けても意味ないのでは・・・って。なんか僕が作り方を誤解してるのでしょうか?すいません、良く分からなくて。 それから >最初に書いたスクリプトで余白なしのものを作って実行してみましたが, >SWFのボタン(MC)領域から直接HTML領域に「rollout」してもちゃんと >「rollout」は認識され,中のスクリプトは実行されましたよ。 マジですか?「最初に書いたスクリプト」って、on(rollOver)ではなく、hitTestでロールオーバー状態をmcに作ったやつですよね?なんか本を見たりとか、ネットで色々調べたりしたんですが、やっぱりhitTestだと余白のないところから出たときにrollOutしてくれないんですよね・・・on(rollOut)で記述するとちゃんとしてくれるのに・・・・ なんかActionScriptってホントに難しい・・・挫折しそう(笑)

関連するQ&A

  • インスタンス名の変更mcどうしのhittest

    お世話になります。Flash,actionscriptの初心者です。 現在actionscript2.0でちょっとしたFlashコンテンツを作っているのですが、解決できない ことがあり、ぜひお知恵を拝借できればと思います。 詳しくは添付図をご覧いただきたいのですが、 A1_mcとB1_mcのムービークリップをhittestで衝突判定させ、 B1_mcは見えないようにし、 A1_mcはgotoAndPlay(2)で2フレーム目にします(☆の絵)。 同時にthis._name="C1_mc"でインスタンス名を変更しました。 (ここまでは大丈夫で、trace(this._name)でも変更が確認できる。) 同じようにA2、B2、C2も設定しました。 そして、姿(○⇒☆)とインスタンス名(A⇒C)と変わった C1_mcとC2_mcをhittestで衝突判定させてD_mc(■)を見えるようにしたいのですが、 何も起きず、hittestが発動していないのではと思ってしまいます。 説明がわかりにくいと思うのですが、インスタンス名を変更した物どうしのhittestを うまく発動させるにはどうしたらよいか、教えていただきたいのです。 にわか知識のためFlashやactionscriptの根本的な問題を理解できてなさそうです・・・。 ちなみに何がやりたいかというと、○と○、○と☆ではお互いに反応しないが、 ○と◇が合体して☆になったもの同士(☆と☆)が接触すると、反応して■が出現する・・・ そんなFlashを作りたいのです。 自分の現状のやり方以外でこれが実現できるのなら、それでも大歓迎です。 長文になりましたが、ぜひともよろしくお願いいたします。 <参考・・自分の組んだAS> A1_mc.onEnterFrame = function() { if (this.hitTest(_root.B1_mc))     { _root.B1_mc.gotoAndPlay(2); //2フレーム目(空のキーフレーム)にとび、B1を消す this.gotoAndPlay(2);  //○⇒☆(2フレーム目)に姿を変える this._name="C1_mc"; //インスタンス名をA1_mcからC1_mcに変える     trace(this._name); //インスタンス名の変更を確認する。 delete this.onEnterFrame;     } else{ } }; A2_mc.onEnterFrame = function() { if (this.hitTest(_root.B2_mc))     { _root.B2_mc.gotoAndPlay(2); //2フレーム目(空のキーフレーム)にとび、B1を消す this.gotoAndPlay(2);  //○⇒☆(2フレーム目)に姿を変える this._name="C2_mc"; //インスタンス名をA2_mcからC2_mcに変える     trace(this._name); //インスタンス名の変更を確認する。 delete this.onEnterFrame;     } else{ } }; C1_mc.onEnterFrame = function() { if (this.hitTest(_root.C2_mc))     {     this.visible = false ; //姿を消す _root.C1_mc.visible = false; _root.D_mc.gotoAndPlay(2); //D_mcの出現(D_mcの1フレーム目は透明で見えなくしている。2フレーム目からアニメーションさせたいのでvisibleは使わない)     delete this.onEnterFrame; }   else{ } };

    • ベストアンサー
    • Flash
  • フラッシュ、ロールオーバーでスライドするメニューを作りたいのですが

    ?http://www.au.kddi.com/? こちらのauのサイトのトップページのスライドするメニューを 作成したく、 http://www.condo.fromc.jp/flash/memo/index.html ここの5つ目の「スライド式メニュー」を使わせてもらったのですが、 こちらのファイルでは、ロールアウトした際に、全てのタブが 右に戻ってしまいます。ロールアウトした時は、タブを等間隔に 戻す様にしたくて、スクリプトをいろいろといじってみて どうしてもできません。以下のスクリプトのままでは、 右に戻ってしまうのは理屈ではわかるのですが、 計算式がいまいちわかりません。 こちらはどのように修正すればよいのでしょうか? onClipEvent (load) { nMyNum = 0; nTotal = 4; nMinX = 5; nMaxX = 468; nDest = nMaxX; nDelay = 10; this.hitArea = button_mc; function xSetDest(nNum) { var i = 1; while (i<=nNum) { _parent["cont"+i+"_mc"].xSetMove("left"); i++; } while (i<=nTotal) { _parent["cont"+i+"_mc"].xSetMove("right"); i++; } } function xSetMove(sDest) { switch (sDest) { case "left" : nDest = nMinX; break; case "right" : nDest = nMaxX; break; } this.onEnterFrame = xMove; } function xMove() { nNextX = this._x+(nDest-this._x)/nDelay; if (Math.abs(nDest-nNextX)>0.1) { this._x = nNextX; } else { this._x = nDest; delete this.onEnterFrame; } } } on (rollOver) { this.xSetDest(nMyNum); }

    • ベストアンサー
    • Flash
  • 良いソースの書き方について(複数のインスタンスをまとめてヒットテストする方法)

    ■例文: ---------------------------------------------------------------- onClipEvent (enterFrame) { if ( this.hitTest(_root.char1)) { _parent.nextFrame(); } else if ( this.hitTest(_root.char2)) { _parent.nextFrame(); } else if ( this.hitTest(_root.char3)) { _parent.nextFrame(); } else if ( this.hitTest(_root.char4)) { _parent.nextFrame(); } else if ( this.hitTest(_root.char5)) { _parent.nextFrame(); } else if ( this.hitTest(_root.char6)) { _parent.nextFrame(); } else if ( this.hitTest(_root.char7)) { _parent.nextFrame(); } else if ( this.hitTest(_root.char8)) { _parent.nextFrame(); } else if ( this.hitTest(_root.char9)) { _parent.nextFrame(); } else if ( this.hitTest(_root.char10)) { _parent.nextFrame(); } else if ( this.hitTest(_root.char11)) { _parent.nextFrame(); } } ---------------------------------------------------------------- 上記は、_root.char1 から_root.char11までインタンス名をつけたムービークリップとのヒット確認をするアクションスクリプトです。 こういう動作をしたい場合。 for文を駆使する等で、ソースを短くまとめる方法はありませんでしょうか。 いい案がありましたら、是非ご教授の程宜しくお願い致します。

    • ベストアンサー
    • Flash
  • マウスアウトしているのに、マウスオーバーのままになってしまいます。

    よろしくお願いいたします。 ↓このようなものを作っています。(実際に参考にしているサンプルです。) http://www.oshige.com/flash/mx/swf17/divide_x.html スクリプトは --------------------------------- this.init(); this.onEnterFrame = function() { if (base.hitTest(_root._xmouse, _root._ymouse, false)) { this.rollover(); } else { this.rollout(); } this.resize(); this.setalpha(); }; 以下、function init、function rollout、function rollover、function resize、function setalphaが続きます。 --------------------------------- 最下層のレイヤーに「base」という名前のムービークリップを、ドキュメントと同じサイズ、x=0、y=0で配置。 その上に実際に動かしたいムービークリップが乗っていて、「base」にマウスオーバーしている時にそれぞれのムービークリップの動きをコントロールするというものです。 ですが、マウスを速く動かした時などに、baseからマウスアウトしているにも関わらず、マウスオーバーの状態のままになってしまいます。 色々試してみたところ、実際にbaseやムービークリップが乗っているサイズよりもドキュメントのサイズをかなり大きく取ると解消されたのですが、(サンプルでもそのようになっていました)それではページデザイン上問題があるので・・ スクリプトでどうにかできるものでしょうか? どうぞよろしくお願いいたします。 全然意味が分からない説明になっているかもしれません。不明な点がありましたらご指摘ください。

    • ベストアンサー
    • Flash
  • ActionScript2.0のイベントについて

    親ムービークリップに配置した子ムービークリップのイベントが実行されなくて困っています。 親ムービークリップ自体には下記のイベントを設定しています。親ムービークリップはattachMovieで動的に配置しています。 onRollOver・・・onEnterFrameを設定 onRollOut・・・onEnterFrameを削除 子ムービークリップを配置して子ムービークリックにイベントを設定しました。onEnterFrameをは実行されますが、onReleaseが実行されず困っています。 function Parent() { this.onRollOver = function() { this.onEnterFrame = function(){・・・} } this.onRollOut = function(){ delete this.onEnterFrame; } this["child_mc"].onRelease = function() { trace('a') // 実行されない } this["child_mc"].onEnterFrame = function() { trace('b') // 実行される } } ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ _root.attachMovie("Parent", "parent_mc", _root.getNextHighestDepth(), new Parent()); 子ムービークリップはオーサリングで静的にParentに配置し、プロパティでchild_mcと設定しています。 onReleaseは実行できず、そこで止まっています。 なんでも良いので教えてください。

    • ベストアンサー
    • Flash
  • 3つのムービークリップ再生・巻き戻しの順番制御

    初めまして。 初心者につき、基本的な事だとは思うのですが、調べても分からなかったため、こちらで質問させて頂きたいと思います。 3つのムービークリップ(a_mc,b_mc,c_mc)【フレーム数30】と、 各々を再生させるためのボタン(A,B,C)を使って、 b_mcを再生中にAのボタンを押すと、b_mcを巻き戻した後で、 a_mcを再生するといった感じで3すくみのような状態にしたいのですが、b_mcの巻き戻しとa_mcの再生が同時に行われてしまいます。 現在のActionScriptは以下のようなものなのですが、どなたかご教授願えませんでしょうか? よろしくお願いいたします。 ボタンAのスクリプト on (release) { //Cの巻き戻し _root.c_mc.onEnterFrame = function() { if (this._currentframe>=2) { this.prevFrame();} else {delete this.onEnterFrame} } //Bの巻き戻し _root.b_mc.onEnterFrame = function() { if (this._currentframe>=2) { this.prevFrame();} else {delete this.onEnterFrame} } //BでもCでもないときの判別式? //Aの再生 _root.a_mc.onEnterFrame = function() { if (this._currentframe<=29){ this.gotoAndPlay(this._currentframe); delete this.onEnterFrame} } }

    • ベストアンサー
    • Flash
  • 吸着後の事

    吸着後についてわからない事があります。 ドラッグ&ドロップでmaru_mcをsikakuというMCに吸着させています。 sikakuというMCに衝突していない時は指定座標に戻るようにしているのですが、二点うまくいかないところがあります。 吸着後、maru_mcをsikakuから離す時、maruがその場を動こうとしない時があり、すんなりドラッグできない。 maru_mcが、衝突していない時でも指定座標にもどらず、sikakuに吸着してしまう時があります。 改善点等たくさんあるとおもいますが、よろしくお願いします。 下記スクリプトです。 maru_mcのスクリプト on (press) { this.startDrag(); this.onEnterFrame = function() { if (this.hitTest(_root.sikaku)) { this._x += (_root.sikaku._x-this._x)/4; this._y += (_root.sikaku._y-this._y)/4; } }; } on (release, releaseOutside) { this.stopDrag(); this.onEnterFrame = function() { if (!this.hitTest(_root.sikaku)) { this._x += (400-this._x)/6; this._y += (300-this._y)/4; } else { this._x += (_root.sikaku._x-this._x)/4; this._y += (_root.sikaku._y-this._y)/4; } }; }

  • flash as2.0 hitTest()について

    FLASHMXで作業をしています。 mcが壁に当たると反対方向にmcを移動させたいのですが 以下では、うまくいきません。理由がわかりませんし打開策も わかりません。解決策を教えてください。よろしくお願いいたします。 onClipEvent(load){ this._x=100; this._y=380; } onClipEvent(enterFrame){ this._y -=3; if(_root.tama_mc.hitTest(_root.kabe_mc)==true){ this._y +=5; } }

  • アクションスクリプト ifがうまく働いてくれません…

    こんにちは。 FLASH8、OSwinXP、初心者 です。 アクションスクリプト「if」に関するご相談です。 ●クリップにマウスオン(rollover)するとダイナミックテキスト(_root.texbox_mc.hhh)の数字がカウントダウンされる、というものを作っています。 ★問題は、以下のスクリプトだとカウントダウンを50で止めたいのにスルーしてどこまでもカウントダウンしてしまい、 onClipEvent (load) { hoge = 1; snt = 100; } on (rollOver) { this.onEnterFrame = function() { hoge -= 1; cont = (snt+hoge); _root.texbox_mc.hhh = cont; //(1) if (cont<50) { cont = 50; } } } ★以下のスクリプトだとカウントダウンが50で止まるんですが、マウスオン(rollover)した瞬間、undefined未定義と表示されてから100が表示され、カウントダウンという展開になってしまいます…100からダウンしてくれたらいいんですが…。 onClipEvent (load) { hoge = 1; snt = 100; } on (rollOver) { this.onEnterFrame = function() { _root.texbox_mc.hhh = cont; //←(1)をここに上げるとifは効くが、undefinedが表示されてしまう hoge -= 1; cont = (snt+hoge); if (cont<50) { cont = 50; } } } ☆つまりはundefinedが出ないで100から始まり、50で止まってくれればいいんですが…。 どなたか教えてくださいませ。 前出があるかと検索しても出てきませんでしたが、これに類似したものでもよいのでページ等教えていただければ幸いです。

  • 取得した変数の階層について

    どうしても解らないのでご質問させてください。 Flashで、親MC内の複数の子MCのインスタンス名から数字を取得し (product1~product9)それぞれのマウスアクションを まとめて親MC内のフレームに記述しました。 試行錯誤の末、 for (i=1; i<10; i++) { this["product"+i].Para = i; this["product"+i].onRollOver = function() { trace(this.Para); this._parent["product"+this.Para].onEnterFrame = function() { this._parent["product"+this.Para]._alpha -=this._parent["product"+this.Para]._alpha/2; }; }; } で、上手く動くようになったのですが、this.Paraを代入すると this["product"+this.Para]では動かなかったのです。 階層がthis._parentじゃないと動かないのが、謎です。 ちなみに全部ルート上において、階層を_rootのみで指定すると上手く行きました。 なぜ、親MC内だとthis._parentという指定になるのか、 知りたいです。 このままだと肝心な事が解っていないまま、なんとなくできてしまった感じなので…どうぞよろしくお願いいたします。

    • ベストアンサー
    • Flash

専門家に質問してみよう