FLASH8(Win-XP)使用者です。
MCを最前面にもってくるために
myDepth = _root.getNextHighestDepth()
_root.myMC.swapDepths(myDepth);
を使っていますが、不審な動作が多いため検証実験をしています。
不審点はフレーム逆行時のみMCが複製されているという点です。
以下が私の実験です。
■実験■
2フレームを用意し、タイムラインに以下を書き込みます。
<1フレーム目>
this.stop();
myDepth = _root.getNextHighestDepth()
_root.box.swapDepths(myDepth);
_root.button.onRelease = function(){
_root.nextFrame();
}
<2フレーム目>
this.stop();
myDepth = _root.getNextHighestDepth()
_root.box.swapDepths(myDepth);
_root.button.onRelease = function(){
_root.prevFrame();
}
※ _root.box は解りやすくするため半透明なMCにします。
ここで2フレーム→1フレームに戻るときのみ box の色が濃くなっていくのがわかると思います。
どんどん複製されているためだと思います。
なぜ複製されてしまうのでしょうか?
また回避策はあるのでしょうか?
お詳しい方、よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
インスタンスの深度を変更すると、元のインスタンスに代わって、
別物のような状態でその存在が認識されてしまいます
そして、深度が0以上になることで完全に複製状態のようになってしまうのです
(getNextHighestDepth()は最低でも 0 の値を返します)
nextFrame()の際は、"元から代わって複製状態になったよ"という情報が
受け継がれるのでさらに増えると言うことはありませんが、
prevFrame()で戻った際はその情報は伝達されず元のインスタンスが再度読み込まれてしまい、
それに伴い元の深度の変更がないインスタンスが再描画されてしまうのです
解決策としては、_root.prevFrame();の際に
_root.box.removeMovieClip();
と記述し、その複製状態のMCを削除することで回避することができます
うまくいきました!!
しかし深度って思う以上に複雑ですね・・
>>prevFrame()で戻った際はその情報は伝達されず
↑これははたしてバグなんでしょうか?
ありがとうございました。
No.3
- 回答日時:
私も以前に同様の(同じ事が原因の)質問に回答したことがあります。
「質問:シーン移動後に移動前のmcが残って表示される」
http://oshiete1.goo.ne.jp/qa2033432.html
↑教えて!goo ↓OKWave (同じです)
http://okwave.jp/qa2033432.html
> >> prevFrame()で戻った際はその情報は伝達されず
> ↑これははたしてバグなんでしょうか?
#2の方も書かれている通りバグではありません。
ムービークリップの深度を変更すると,
ムービークリップはレイヤーというものに依存しなくなるので,
そういう現象が起こります。
上記URLの説明は長くてわかりにくいですが,
上記URLのように現象をループ再生でとらえるとわかりやすいと思います。
□ レイヤー 筆・・|○ []|
□ レイヤー 筆・・|●////////////[]| ←MCがある
□ レイヤー 筆・・|○ []|
スクリプトを何も書かなければ,ムービーはループ再生され,
真ん中のレイヤーにあるMC(ムービークリップ)は,
フレーム1 に戻る度にまた同じ位置に出没します。
途中で swapDepths をしたとします。
本当のレイヤー構造を Flash で見ることはできませんが,
イメージ的には次のようになります。
swapDepths で登場→●////
□ レイヤー 筆・・|○ []|
□ レイヤー 筆・・|●///////| []| ←MCがある
□ レイヤー 筆・・|○ []|
これを再生させれば,上に書いたことと同じく
ムービーはループ再生され,
真ん中のレイヤーにあるMC(ムービークリップ)は,
フレーム1 に戻る度にまた同じ位置に出没します。
したがって,
ループしたとたんに,ムービークリップは2つになります。
ループ再生で考えるとわかりやすいですね。
prevFrame()で戻ったときも同じです。
本来,ムービークリップは,上で書いた図のように,
□ レイヤー 筆・・|○ []|
□ レイヤー 筆・・|●////////////[]| ←MCがある
□ レイヤー 筆・・|○ []|
とそのレイヤーにずっと存在しているものですから,
その存在しているはずのムービークリップが元のレイヤーに復活するのです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- カスタマイズ(バイク) カスタマイズ 1 2022/11/12 01:09
- その他(プログラミング・Web制作) pythonのグローバル変数 2 2022/11/25 18:02
- C言語・C++・C# 【C++】IDirect3DSurfaceのディープコピーは可能ですか? 1 2022/07/06 02:47
- Android(アンドロイド) Androidスマホの時刻の自動同期の頻度を短くしたい 4 2022/12/02 17:29
- サングラス・カラコン 眼鏡 7 2022/11/30 06:36
- サングラス・カラコン 眼鏡 フレーム変更 3 2022/12/01 00:43
- サングラス・カラコン 4000円以内のメガネフレーム 9 2022/12/01 10:30
- その他(パソコン・スマホ・電化製品) pthonのframeに演算結果(数値)を表示したい 1 2023/06/05 22:08
- その他(ファッション) スポーツメガネでフレームの色は白などはあり? 2 2022/11/30 07:26
- その他(ソフトウェア) 「.movpkg」「.m3u8」ファイルを「.mp4」に変換できるお勧め有料ソフトをご教示ください 1 2022/10/20 11:04
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ページの切り替えのフェードイ...
-
パブリッシュで左端が切れます
-
【FLASH】swapDepthsでMCが増...
-
ロールオーバーで他の画像を表...
-
フレーム内のオプションボタン...
-
Directshowを使って動画を画像...
-
URLを隠す、または別アドレスな...
-
フレーム内に移動したい
-
gotoAndPlayでシーンの移動
-
ComboBoxの設定方法
-
CupCatの使い方
-
シンクライアントとMetaFrameの...
-
phpで音を鳴らす
-
ドロップフレームの計算をエク...
-
フレームをまたいだ背景画像の...
-
チェックボックスを横並びに表...
-
「フレームのような」ページを...
-
SDHCカードのデータをPCに取り...
-
画像のフェードイン
-
AS3.0で子MCから他の子MCの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ニュースティッカーの作り方
-
Flashでの連打ゲームの作成方法...
-
ロールオーバーしたボタンは押...
-
Flashで一部レイヤーだけループ...
-
Flash lite 1.1で、指定範囲内...
-
画面上にランダムでムービーク...
-
円を描くように動くアニメーシ...
-
パブリッシュで左端が切れます
-
ページ移動する間にMCのアクシ...
-
ラジオボタンの作り方
-
長方形がランダムに消えるやつ
-
actionscript2.0でMCの切り替え...
-
flashでスライド式メニューを作...
-
ムービークリップを一定時間ご...
-
時計がついたスライドショーが...
-
プルダウンメニューを作ろうと...
-
【ActionScript】クラス化のメ...
-
ロールオーバーで他の画像を表...
-
Flashで四角い図形で切り替わる...
-
flashのActionscriptについて
おすすめ情報