• 締切済み

どうしてロールオーバーを繰り返すと同じオブジェクトが二重に表示されるのですか??

こんにちは.またまたみなさまのお力をお借りしにきました. 使っているのは「FlashCS/AS1&2」です. アクションフレームに"nu1"というMCをロールオーバー時拡大,ロールアウト時縮小(もとの大きさ)にするASを記述しています.(他にも”nu2”などの同じ機能を持ったMCもあります.) 正常に動くのですが,フレームを何度か移動して,また"nu1"などにロールオーバーしたとき,"nu1"の上に"nu1"がまた再表示されたりしてしまいます.("nu1"はどのフレームにも存在しています.) 原因は震度の問題なのでしょうか?? 震度に関しては以下のASを記述しています. ("top"というMCが存在するアクションフレームに) top.swapDepths(100000); ("nu1"が存在するアクションフレームに) nDepth = 0; nu1.onRollOver = function() { nu1.swapDepths(++_parent.nDepth); nu1._xscale = 120; nu1._yscale = 120; } 他に試したことは,アクションフレームではなく"nu1"のムービークリップアクションフレームにロールオーバー等のASを記述することもしましたが,同じような現象が起こってしまいます. 原因はなんなのでしょうか??? どうか解決していただけないでしょうか?

  • Flash
  • 回答数1
  • ありがとう数0

みんなの回答

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

深度に原因があるというよりも、フレーム移動に原因があります。 OKWave「【FLASH】swapDepthsでMCが増殖する??」 http://okwave.jp/qa2679897.html OKWave「シーン移動後に移動前のmcが残って表示される」 http://okwave.jp/qa2033432.html

vamse77
質問者

補足

なるほど!すごく勉強になります! しかし,うまく実行できなかったのは, この"nu1"がシーンに配置されているのが原因なのでしょうか?? ご紹介していただいたことを勉強していくと 「removeMovieClip」は「attachMovie」や「swapDepths」を削除することができる. と理解できました. だから,始めから画面に配置してあるMCには働かない機能なのですか?

関連するQ&A

  • Flash オブジェクトに二つの機能をつけた場合

    こんにちは.またまたお世話になります. 環境は「Mac/FlashCS3/AS1&2」です. 今回は,オブジェクトにロールオーバーの機能とドロッグ&ドロップの機能をフレームごとで,機能させたいのです. 例えば,"s1"フレームではMC1~3をロールオーバーしたときアルファ50にし,ロールアウトするとアルファ100に戻す. また,"s2"フレームではMC1~3をドラッグ&ドロップできる. 以上のASを制作すると,”s1”~”s2”へのフレームを移動したときに,ロールオーバーとドラッグ&ドロップの機能が混在してしまいます. 以前に,「オブジェクトの表示/非表示」の質問で「変数フラグを作成して・・・」といったご回答をいただいて,これが参考になるとは思うのですが,オブジェクトを指定するために使うfor文や,ちょっと長く記述するロールオーバーなどのASが入ってくると,お手上げでございます(汗). どうか解決のほどよろしくお願いします.

    • ベストアンサー
    • Flash
  • ロールオーバーで下の画像を表示させる

    質問番号:7020788を参考にしています。 http://okwave.jp/qa/q7020788.html 一番下に写真(400x400)を置き、その上にmc0~mc3(200×200)を4つ配置しました。 mc0にロールオーバーすればmc0がフェードアウトして200×200だけが写真を見え るようにしたいと考えています。 同様にmc1にロールオーバーすればmc1がフェードアウトします。 しかし、どのmcにロールオーバーしてもmc0~mc3の全体がフェードアウトしてし まい、私が思っておるように動作いたしません。 次にアクションスクリプトを示します。 mport fl.transitions.*; import fl.transitions.easing.*; mc0.addEventListener(MouseEvent.ROLL_OVER,onrollOver); mc1.addEventListener(MouseEvent.ROLL_OVER,onrollOver); mc2.addEventListener(MouseEvent.ROLL_OVER,onrollOver); mc3.addEventListener(MouseEvent.ROLL_OVER,onrollOver); function onrollOver(eventObj:Event):void { for (var i:Number = 0; i<=3; i++) { TransitionManager.start(this, {type:Fade, direction:Transition.OUT, duration:2, easing:None.easeNone}); removeEventListener(MouseEvent.ROLL_OVER,onrollOver); } } FLASH CS3でアクションスクリプトは3.0で作っています。どうか対処策を教えて いただきたく思います。

    • ベストアンサー
    • Flash
  • ロールオーバーで下画像を表示させる

    ステージを400x400として写真をおきます。 その上に100x100のmcを重ねます。マウスのロールオーバーで次々に画像が現れ 最終的に1枚の写真として見えるようにしたいです。 今はmcが1つですが、これを16個配置したいと思います。 その方法を教えてください。 FLASH CS3 AS2.0で制作しています。 import mx.transitions.*; import mx.transitions.easing.*; my_mc1.onRollOver = function() { TransitionManager.start(my_mc1, {type:Fade, direction:Transition.OUT, duration:2, easing:None.easeNone}); }

  • Flash ActionScript(アクションスクリプト)の挙動

    Flash ActionScript(アクションスクリプト)の挙動が 思うようにならず困っています。 ●使用ツール  Macromedia Flash MX ●やりたいこと  ムービークリップ【mc_4_0】【mc_4_1】【mc_4_2】が配置されている。  各ムービークリップにマウスが乗っているかを毎フレーム判定し、  乗っていればx/yscaleを1.5倍に、乗っていなければ1倍に戻す。 ●現在の処理  ○メインタイムラインの処理 ---------------------------- //最初のシーンを設定 _global.scene = SceneMcSelect //毎フレーム、シーン関数を呼ぶ onEnterFrame = function() { //現在シーンを呼ぶ eval( _global.scene )(); } ----------------------------  ○SceneMcSelect関数の定義 ---------------------------- function SceneMcSelect(){ for( count = 0 ; count < 3 ; count++ ){ //マウスが乗ったか? eval("mc_4_" + count).onRollOver = function(){ trace(count); eval("mc_4_" + count)._xscale = 150; eval("mc_4_" + count)._yscale = 150; } //マウスが離れたか? eval("mc_4_" + count).onRollOut = function(){ trace(count); eval("mc_4_" + count)._xscale = 100; eval("mc_4_" + count)._yscale = 100; } } } ---------------------------- ●現在の挙動  onRollOverやonRollOutの判定は正しく行われているようですが、  x/yscaleの変更処理が行われません。  traceでcountの値を確認すると、なぜか【3】になっています。 難しい処理をしているわけではないと思うのですが、 思うとおりの挙動にならず困っています。 何か間違いや見落とし等ございましたら、ご指摘お願いいたします。

    • ベストアンサー
    • Flash
  • Flash オブジェクトの表示/非表示

    こんにちは。今回はオブジェクトの表示/非表示のことに関して質問させていただきます.使っているものは、Mac/FlashCS3/AS1&2 です. (フレーム名"s1"にて) MC(ムービークリップ)/pre_btn(ボタン)/del_btn(ボタン)/btn(ボタン)というオブジェクトが画面に表示してあります. (アクションフレームに) pre_btn.onRelease = function(){   MC._visible = true; } del_btn.onRelease = function(){   MC._visible = false; } (btnムービークリップアクションに) on(release){   _root.gotoAndPlay("s2") } (フレーム名"s2"にて) btn2(ボタン)のみ画面に表示されています. (btn2ムービークリップアクションに) on(release){   _root.gotoAndPlay("s1") } 以上のACを記述しました.これでMCを表示/非表示させることができ,btnをクリックし"s2"フレームに移動/btn2をクリックし"s1"フレームに移動することもできるようになりました. しかし,"s1"にて非表示にしたMCが,"s2"のフレームに移動し"s1"に戻ってきたとき,表示されている状態に戻ってしまいます. どうしたら,一度非表示にしたMCを,その後フレーム移動したとしても,非表示の状態に保つことができるのでしょうか?? どうか,ヒントだけでもいいので,何か教えていただけると嬉しいです. よろしくお願いします.

  • suzuka rollOverで画像が徐々に拡大する

    マウスがその画像の上に乗るとずずずっと画像がある倍率まで大きくなり、 その画像の上を離れたとたんにずずっと元のサイズに戻る記述はいかようにするのでしょうか。 フレームアクションにて img_flag = false; my_img.onRollOver = function(){  if(!img_flag){   my_img._xscale = my_img._yscale = 130;  }else{   my_img._xscale = my_img._yscale = 100;  }  img_flag = !img_flag; }; 上記だと画像の左上から右下に向かってズームしてしまいますし、 何よりずずずっという動きがありません。 お時間のあるかたなにとぞお願いします。

    • ベストアンサー
    • Flash
  • Flash MCにロールオーバーするとスライドインするテキスト

    これをなんとかやってみようと試行錯誤してますがうまくいきません。ロールオーバーさせようとしているMCはマウスがロールオーバーすると拡大するというスクリプトが書かれています。このアクションと同時にマウスのロールオーバー時にテキストをスライドインさせたいのですが、どのようなスクリプトをかけばよいでしょうか? 透明ボタンを作って拡大されたMCとの当たり判定でテキストをスライドインさせる等の試行錯誤をしましたがうまくいきません。どうかご教授よろしくお願いします。 プライベートのチューターとして、時給でチューターを探そうとさえ考えています。

  • 縮小させる時の基点について

    ActionScriptを勉強中です。分からないことがあるので質問させていただきます。 ステージ上にマスクをかけたムービークリップ(インスタンス名:mc)があり、 そのmcを拡大ボタンと縮小ボタンを使い拡大/縮小できるようにしています。 mcが拡大されている時には、mc自体をドラッグして動かせるようにしています。 レイヤー構造は ーーーーーーーーーーーーーーーーーーーーーーーーーーーー 1、ボタン:拡大ボタンと縮小ボタンを配置 2、マスク ---マスクの対象:mcを配置 3、背景:背景というか枠を書いています ーーーーーーーーーーーーーーーーーーーーーーーーーーーー となっております。 mcにには ーーーーーーーーーーーーーーーーーーーーーーーーーーーー on (press) { left = Stage.width-this._width/2-2; top = Stage.height-this._height/2-98; right = this._width/2+2; bottom = this._height/2+2; this.startDrag(false, left, top, right, bottom); } on (release, releaseOutside) { this.stopDrag(); } ーーーーーーーーーーーーーーーーーーーーーーーーーーーー 拡大ボタンには ーーーーーーーーーーーーーーーーーーーーーーーーーーーー on (release) { if (mc._yscale < 300) { mc._xscale = mc._yscale += 100; } else { mc._xscale = mc._yscale = 300; } }ーーーーーーーーーーーーーーーーーーーーーーーーーーーー 縮小ボタンには ーーーーーーーーーーーーーーーーーーーーーーーーーーーー on (release) { if (mc._yscale > 100) { mc._xscale = mc._yscale -= 100; } else { mc._xscale = mc._yscale = 100; } } ーーーーーーーーーーーーーーーーーーーーーーーーーーーー と書いています。 拡大した時の挙動は問題ないのですが、縮小する時の挙動に問題があります。 mcの中心を基点にしているため、端の方でで縮小すると余白が見えてしまいます。 この余白を見せないためにはどうしたら良いのでしょうか? 素人考えでhitTest()を使えば良いのかと思っているのですが、なかなかうまくいきません。 どうしたらよいのかご教示いただけると助かります。よろしくお願いいたします。 制作環境はCS4でAS2.0です。

  • createEmptyMovieで作成したMCの基準点

    アクションスクリプト2.0、FlashCS、WinXPを使用しています。 createEmptyMovie("test",1); _root.test.loadMovie("test.jpg"); _root.test._xscale = 10; _root.test._yscale = 10; onEnterFrame = function(){ _root.test._xscale += 10; _root.test._yscale += 10; } としたとき、基準点が左下になっているのですが、 これを中心とか、右上とかに変更するためには どのようにしたらいいのでしょうか。。

    • ベストアンサー
    • Flash
  • MC内から_rootへのgotoAndPlay

    初めての投稿です。 宜しくお願い致しますm(__)m FlashCS3、AS2.0を利用です。 _rootで15個位のレイヤーに分け格レイヤーにMCを置き、その中でオブジェクトの制御を行うにホームページのトップ画面を作りました。 ASを1フレーム目に記述するとバグが発生する可能性があると聞いたので、 _rootのみASは2フレーム目に記述したので、ホームページのトップとしては_rootの2フレームしか使っていません。 _rootに swfの読み込み。 stop(); var loader = new MovieClipLoader (); loader.loadClip("Window_scroll.swf", _root.Window_Pic_MC); レイヤーの1つにmp3を読み込み、再生停止の制御を行うMC。 があります。 _rootにMC(1)があり、その中のMC(2)をボタンとして利用していて、 on (rollOver) { this._parent.swapDepths(95); this._parent.gotoAndPlay("n1"); } on (rollOut, releaseOutside) { this._parent.swapDepths(-1); this._parent.gotoAndPlay("n2"); } on (release) { _root.gotoAndPlay("m"); } とMC(2)に直接打ち込んでいます。 "m"が_rootの3フレームから10フレームまでで、 on (release)されるとMC(2)自体が小さくなるように モーショントゥーンで作っています。 そこで質問なのですが、 読み込んだswfの上に別レイヤーでWindowの枠があり、 MC(2)がon (release)時にswfの映像が消えて、 枠が大きくなる様にしたいのですが動いてくれません。 しかも swfも消えなく、小さくなったMC(1)を再度クリックすると 音が再度読み込まれ2重になって流れます。。。 この時微妙に枠が大きくなったり、アルファをかけてあるMC等の色が 濃くなったりするので、全てが2重になっているのかもしれません。 これはバグなのか。。。 長々とスミマセン!! 質問が多くなってしまったので、 _rootのMC(1)の中にあるMC(2)をon (release)した時、_rootにある枠が 大きくなる方法を教えて下さい。 宜しくお願い致します。

    • ベストアンサー
    • Flash

専門家に質問してみよう