• 締切済み

子ムービークリップの制御について

flash初心者です。子ムービークリップの制御について教えてください Tシャツのシュミレーションがあるとします。 シャツ_mcに、1フレーム目「丸くび」、2フレーム目「Vネック」、のカタチで シャツ_mc.色_mcにマスクをかけています。 色_mcには1フレーム目「白」、2フレーム目に「赤」とします。 シャツ_mc.色_mcのそれぞれ1フレームにstop(); ボタン「丸くび_btn」「Vネック_btn」「白_btn」「赤_btn」の4つのボタンで それぞれ組み合わせを作りたいのですが 「丸くび_btn」に on (release) { _root.シャツ_mc.gotoAndStop(1); } 「Vネック_btn」に on (release) { _root.シャツ_mc.gotoAndStop(2); } 「白_btn」に on (release) { _root.シャツ_mc.色_mc.gotoAndStop(1); } 「赤_btn」に on (release) { _root.シャツ_mc.色_mc.gotoAndStop(2); } この場合「丸くび_btn」をクリックして「赤_btn」クリックで「丸くび赤シャツ」ができます ここまではいいのですが 赤の色を保持したまま「Vネック_btn」を押してVネック赤シャツのイメージも見たいのですが 色が白に戻戻ってしまいます。(色_mcの1フレーム目に戻る。) これをなんとかしたいのですが。 (色_mcが選ばれた状態で固定され勝手に移動しないようにしたい) アドバイスお願いいたします。

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

みんなの回答

  • tkmkok
  • ベストアンサー率66% (2/3)
回答No.1

検証してないですが憶測で・・・ >シャツ_mc.色_mcのそれぞれ1フレームにstop(); とありますが、それぞれ2フレーム目もstop();はしてますか?? もし、stopしてなかったらそれで動いちゃうのかな、と。 どうでしょう。

hiro_164
質問者

お礼

遅くなりました アドバイスありがとうございました。 2フレーム目もstop();はいれてありました。 少し悩んで この時点で自己解決できました。 シャツ_mc.マスク用_mc.色_mcとして マスク専用のムービークリップを仲介させることで 解決できました。

関連するQ&A

  • すべてのMCを1フレーム目へ

    ステージ上にMCのインスタンスが100個あるとします。 ボタンのクリックで全部のMCを1フレーム目へ移動させたいと思っています。 _root.EVENT_btn.onRelease = function() { _root.A_mc.gotoAndStop(1); _root.B_mc.gotoAndStop(1); _root.C_mc.gotoAndStop(1); _root.D_mc.gotoAndStop(1); : : } とひとつずつ書くしかないのでしょうか? ほかに効率のよい書き方はありますか? (注)すべてのインスタンスの親は同一オブジェクトではありません。

    • ベストアンサー
    • 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を,その後フレーム移動したとしても,非表示の状態に保つことができるのでしょうか?? どうか,ヒントだけでもいいので,何か教えていただけると嬉しいです. よろしくお願いします.

  • ムービークリップのボタン化

    menu01_mcというムービークリップをボタンにしたいのですが、 ボタン自体に on (release) { _root.photo_mc.loadMovie("1.jpg"); } と書くと正常に動くのですが、 タイムライン上に menu01_mc.onRelease = function(){ _root.photo_mc.loadMovie("1.jpg"); } と書くと動きません。 どのようにすればいいのでしょうか? わかる方教えてください。よろしくお願いします。

  • ムービークリップ内のボタン

    フラッシュ初心者です。 アクションスクリプトがうまく動かず困っています。 シーン1にムービークリップ1(インスタンス名:mc1)とムービークリップ2(インスタンス名:mc2)が置いてあります。 mc2の中にはボタンAを配置してあり、ボタンAをクリックすると、mc1のフレームラベル(B)に飛ぶような制御をしたいです。 ボタンAに記述してあるスクリプトは以下です。 on (release) { this._parent.mc1.gotoAndplay("B"); } しかしクリックしても全く動きません。 絶対パスで指定してもダメでした。 ちなみに、ためしに、mc1ではなく、シーン1上のフレームラベルに 飛ばすように記述したら普通に動きました。。 何か記述間違いがあるのでしょうか? 分かる方がいましたら教えてください。 お願いします。

  • 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
  • setTimeoutでの制御に関しまして

    初めて質問をさせて頂きます。よろしくお願い致します。 「mc_Image1」、「mc_Image2」、「mc_Image3」という 各ムービークリップをストップボタンを押した際に時間差で停止させたいのですが 「mc_Image2」、「mc_Image3」がstopがかからない状態が稀に生じたりします。 (ムービークリップは全て、1フレーム目にstop();、10フレーム目にgotoAndPlay(2);と設定) 少し端折っておりますが、スクリプトを記載いたします。 ---------------------------- //何回ルーレットしたかカウントする var count:Number = 0; //スタート/ストップボタンが押された押されていないかのフラグ var flg_StartStop:Boolean = false; // mc_Image停止待機速度変数(ミリ秒) var hensu1 = 2000; var hensu2 = 3000; //スタート/ストップボタンを押した時に呼び出される関数 btn_StartStop.onPress = function() { if(flg_StartStop) { //選ばれたフレームに飛ぶ mc_Image1.gotoAndStop(parseInt(one)+1); // setInterval で hensu(ミリ秒)後に_root.gotoAndStop(); を実行 stopID = setInterval(function () { _root.mc_Image2.gotoAndStop(parseInt(two)+1); clearInterval(stopID); }, hensu); stop2ID = setInterval(function () { _root.mc_Image3.gotoAndStop(parseInt(three)+1); clearInterval(stop2ID); }, hensu2); //押されたかどうかの変数を「偽」に flg_StartStop = false; //カウンタを増やす count++; } else { //ムービークリップを走らせる mc_Image1.play(); mc_Image2.play(); mc_Image3.play(); //押されたかどうかの変数を「真」に flg_StartStop = true; } } ---------------------------- 。 きちんと「gotoAndStop();」させるにはどのように対処すれば よろしいでしょうか。 不足がございましたら申し訳ありません。 何卒よろしくお願い致します。

  • 外部テキストが複数のインスタンスに読み込まれない?

    質問させてください。 ボタンをクリックしたときに指定されたフレームへ飛び、MCが動き、 そのMC内で外部テキストを読みこみ、 それぞれ設置した2つのダイナミックテキストへ文を読み込ませるという構想になっております。 (以下階層です) シーン1 b(mc)フレーム1        L・背景 フレーム1          ・ダミーボタン1フレーム1 ASレイヤーに this.stop();          ・ダミーボタン2フレーム1 ASレイヤーに this.stop();          ・パネル/a(mc) フレーム2 (AS) ダミーボタン1 インスタンス名btn1 on (release) { _root.b.gotoAndStop(2); _root.b.a.t1.htmlText = _root.b.a.text1; _root.b.a.m1.htmlText = _root.b.a.text1_a; } ダミーボタン2 インスタンス名btn2 on(release){ _root.b.gotoAndStop(2); _root.b.a.t1.htmlText = _root.b.a.text2; _root.b.a.m1.htmlText = _root.b.a.text2_a; } パネル、a(mc)部分に onClipEvent (load) { System.useCodepage = true; this.loadVariables("sample.txt"); trace("loading"); } onClipEvent (data) { trace("完了"); } パネル内 ダイナミックテキスト(インスタンス名:t1 フレーム5 ダイナミックテキスト(インスタンス名:m1 フレーム5 (AS) 5フレーム目にthis.stop(); 外部テキスト内 sample.txt 文はファイルと同じところにあります。 &text1=</u>AAA</u>& (あえて今は全角にしてあります) &text1_a=</u>aaa</u>& &text2=</u>BBB</u>& &text2_a=</u>bbb</u>& ------------------------------------- 出来ているのはb(mc)内ダミーボタンを押すとフレーム2に飛び、 フレーム2に配置されているパネルa(mc)の中のダイナミックテキストのあるフレーム5で止まる、というところまでです。 困っているのは b(mc)内、フレーム2のa(mc)部分でtraceするとloadingは出ているので読み込まれてはいると思うのです。 しかしムービープレビューすると文のほうは何も表示されずでして…パスがあってないのでしょうか…。 パネル内のダイナミックテキストに表示させるに当たりどこが違うか、 長々と恐縮ですがご教授願います。 環境はWinXP、Flash8 proです。

    • ベストアンサー
    • Flash
  • ムービークリップを動かす

    FLASH 5 を使っています。 ボタンを使ってムービークリップを動かそうとしています。 下記のように書いて、ボタンを押した時と 『 ↓ 』 キーを押した時に 『 ●●_MC 』 が -10 ずつ動いて -550 まできたら動かないようにしています。 on (press, keyPress "<Down>") { if (_root.●●_MC._y>=-550) { _root.●●_MC._y-=10; } } 但しこれだとボタンを押す度に -10 ずつ動きますが、何度も押さなければなりません。 『 ↓ 』 キーを押し続けた場合は連続で動きます。 ボタンを押し続けた場合にも、連続で -10 ずつ動かすにはどのように書いたら良いのでしょうか? 間抜けな質問をしているかとは思いますが、不慣れなものですので何卒宜しくお願い致します。

    • ベストアンサー
    • Flash
  • AS3.0で子MCから他の子MCのフレームへ移動

    Flash professional CS5を使用してAS3.0で記述しています。 メインのタイムラインにフレームラベルが二つ(main1とmain2)あります。 main1にはステージにムービークリップのmc1が,main2にはmc2が配置してあります。 さらに, こういう書き方でいいのかわかりませんが; mc1内にはフレームラベルsub1,sub2があります。 同様に, mc2内にはフレームラベルpart1,part2があります。 sub1ではボタン(btn1)があり,押すとフレームラベルsub2に進むようになっています。(確認済み) sub2にもボタン(btn2)が用意してあり押したらムービークリップmc2内のpart2に移動させたいと考えています。 フレームラベルsub2で btn2.addEventListener(MouseEvent.CLICK, Click2); function Click2(evt:MouseEvent):void{ MovieClip(parent).gotoAndStop("main2"); } と記述すればメインタイムラインのフレームラベルmain2に移動することは確認しました。 しかしフレームラベルpart2へ移動するにどのように記述したらよいかわかりません。 MovieClip(parent).mc2.gotoAndStop("main2"); としてもやはりmc2が未定義なので無理なのでしょうか? もしそうでしたらmain1の段階で定義しようかと思うのですが,その場合はどのように記述すればよいのでしょうか? つまり,メインタイムライン上における後ろのフレームラベルの子のフレームラベルに移動したいです。 説明がうまくできないので図も載せます。 http://www1.axfc.net/uploader/Img/so/99986 よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • AS3.0でムービークリップ制御

    現在、AS3.0でswfファイルを読み込み、その再生・停止をコントロールするswfを作ろうとしています。 そこで自分なりにプログラム書いてみたのですが、停止ができなくて困っています。 以下ソース package { import flash.display.*; import flash.events.*; import flash.net.URLRequest; public class Test extends Sprite { private var mc:MovieClip = new MovieClip(); private var btn_load:SimpleButton = new SimpleButton(); //loadボタン private var btn_stop:SimpleButton = new SimpleButton(); //stopボタン private var l:Loader = new Loader(); public function Test() { mc.x = 30; mc.y = 30; btn_load.upState = this.drawCircle( 0x228822, 20 ); btn_load.overState = this.drawCircle( 0x225522, 21 ); btn_load.downState = this.drawCircle( 0x553355, 20 ); btn_load.hitTestState = btn_load.upState; btn_load.addEventListener( MouseEvent.CLICK, Load ); btn_stop.upState = this.drawCircle( 0x228822, 20 ); btn_stop.overState = this.drawCircle( 0x225522, 21 ); btn_stop.downState = this.drawCircle( 0x553355, 20 ); btn_stop.hitTestState = btn_stop.upState; btn_stop.x = 50; btn_stop.addEventListener(MouseEvent.CLICK, Stop); addChild(mc); addChild(btn_load); addChild(btn_stop); mc.addChild(l); } private function drawCircle( color:uint, r:Number ):Shape { var circle:Shape = new Shape(); circle.graphics.lineStyle( 1, 0x222222 ); circle.graphics.beginFill( color ); circle.graphics.drawCircle( 0, 0, r ); circle.graphics.endFill(); return circle; } private function Load(e:Event):void{ l.load(new URLRequest("animation.swf")); } private function Stop(e:Event):void{ mc.stop(); } } } なにが原因なのでしょうか・・・ わかる方ご回答お願いします。。

    • ベストアンサー
    • Flash

専門家に質問してみよう