Flash5のモジュール方ボタンについて

このQ&Aのポイント
  • Flash5のモジュール方ボタンについて
  • モジュールタイプのビデオコントロールボタン作成時のエラーについて
  • 停止ボタンのスクリプトに関する質問と解決方法について
回答を見る
  • ベストアンサー

Flash5のモジュール方ボタンについて

モジュールタイプ(どんなタイムラインに置いてもそのタイムラインを制御できる)のビデオコントロールボタンを作成したのですが、どうしても停止ボタンのスクリプトにエラーがでます。 私は停止ボタンを押すと、制御したいタイムラインの1フレーム目にムービーが戻って停止するようにしようと、スクリプトを組みました。その際、停止ボタンに当てたスクリプトは、 on(release) _parent.gotoAndStop{_parent.1}; です。{}の中のドットのあとの1というのは、 制御したいライムラインの1フレーム目を意味しようとしたのですが、間違っている気もします。。。 1つ上のタイムラインの1フレーム目を指定するには、どのようにスクリプトを書けばいいのでしょう? また、どうしてもわからないので、 ルートタイムラインの1フレーム目に、ラベルで「start」とつけて、先ほどの{}の中を {_parent."start"}; としても、駄目でした。 ちょっと意味が通じにくかったかもしれませんが、 アドバイスいただけたら嬉しいです。 再生、一時停止、巻き戻し、早送り のボタンについてはうまくできました。

  • shevy
  • お礼率67% (703/1046)

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

  • ベストアンサー
  • hokuto_ds
  • ベストアンサー率45% (106/233)
回答No.2

あ、なるほど、モジュールってつまり、MCのなかに入れてパックにしたという意味だったのですね;失礼しました。 目からウロコだったのでためしてみましたが、_parent._currentframeというのはたしかにアクセス可能なプロパティですね。「_parent._currentframe」がプロパティだというのは、考えてみればたしかに道理でした。 私としては「_parent」に「_currentFrame+1」の命令を出す、とはじめは思ったのですが、「_parent._currentFrame」というプロパティに「+1」の命令を出す、というのが正確な考え方のようです;(いや、ほんとに目からウロコ‥「プロパティにアクセス」→「命令を出す」は、たしかに動くはず!前回の回答は私の勘違いでした、すみません) なので_parent.1という「プロパティでないもの」にはアクセスできないのでしょう(相手がいないから)。 _parent.gotoAndStop(_currentFrame+1)でも、_parentのフレーム移動が起きますが、どうも、なぜか一度作動したきりボタンがうごかなくなる?ようです(私のテスト環境のミスかもしれませんが‥)うーん‥‥常になんかいクリックしても1フレームずつとばしたいとき、とかは_parent.currentframeとかを使ったほうがいいということかもしれませんね。 >プロパティ表記を使う場合は、flash自体が現在のムービークリップのプロパティだと判断してしまう そうですね。というか、基本的に、プロパティ表記の_xとかは、this._xとかの「this」が省略された状態で、フラッシュのルールとして「this._xならthis.は省略していい」ということになってるので、this.以外のプロパティにアクセスしたいときは_parent.などのパスが必要になるということですね。 あと、前の回答と重複するラベル指定の話ですが、 on(release){ _parent.gotoAndStop("ラベル"); } でとぶと思います。 いい勉強になりました(^^; では。

shevy
質問者

お礼

ありがとうございました。 私も今回は非常にべんきょうになりました。 モジュール式はけっこう使いまわしがききそうですね。 また、宜しく御願いします。 奥が深い深い、アクションスクリプト! ありがとうございました。

その他の回答 (1)

  • hokuto_ds
  • ベストアンサー率45% (106/233)
回答No.1

えーと、結論からいくと、 ボタンがその「制御したいタイムライン」に置いてある場合(_rootなら_root上、別のムービークリップならその中に)、命令は on(release){ this.gotoAndStop(1); } だけでいいです。ボタンは「自分自身」(this)として、「自分のいるタイムライン」を参照するからです。_parentを入れてしまうと、そのボタンをムービークリップに入れ子にした場合、「そのムービークリップ」ではなく「そのムービークリップの親」を呼びにいってしまいますよ。 で、余談ですが、もし相対パスで_parent.に命令を出したい場合、 on(release){ _parent.gotoAndStop(1); } ですね。ラベルがあるなら on(release){ _parent.gotoAndStop("ラベル名"); } です。で、うしろの引数に{_parent.1}みたいに相対座標を入れることは出来ません。相対座標はすでに_parent.goto..の時点で指定されていて、命令はその座標めがけてとんでいってくれています。 ところで「再生、一時停止、巻き戻し、早送り」のボタンについて気になるんですが‥‥;_parent.を使ってた場合、前述したような問題が出ると思われます。一度、そのボタンを別のMCのタイムラインに配置し、そのボタンの作動を確認してみたらどうでしょう?そのMCのタイムラインではなく_rootのタイムラインを動かしてしまうと思います。

shevy
質問者

補足

回答有難うございます。 結論からいきますと、 on(release){ _parent.gotoAndStop(1)1}; でうまくいきました。 ところで、 私の書き方がまずかったのですが、このボタン群は、 ムービークリップ上に存在するものなのです。 そのボタンセットを含むムービークリップを一つのタイムライン上に置くという方法です。 ですので、他の「再生、一時停止、巻き戻し、早送り」のボタンについては、問題なく_parentで指定できて、動作も問題ないんです。 (書籍ラーニングactionscriptのP327を参考にしています) その際、たとえば、巻き戻しの場合は、 _parent.gotoAndPlay(_parent.currentframe-5) として_parentに4フレームずつ戻るように指定しました。 このときは、()のなかに_parentをしっかり入れても、 _parentのcurrentframeを指定できているんですよね・・ 私の憶測ですが、currentframeというのは、プロパティであり、()の中に_parentのプロパティを表記する場合は、_parent.をプロパティ(currentframe)の前につけなくてはならなくて、 (1)というように、1フレーム目だけを指定する場合は、 指定場所が_parentであっても、()の中に_parentの表記は必要がないという解釈でいいのでしょうか?? 少し、伝わりにくい文章かもしれませんが、 プロパティ表記を使う場合は、flash自体が現在のムービークリップのプロパティだと判断してしまうから、_parentを前につける必要がある・・・との憶測です。 伝わっていないですかね・・・・ できれば、もう一度アドバイス御願いします。

関連するQ&A

  • ボタンのリンク先が毎回定まりません^^;

    ボタンを使ってフレームラベルにリンクを作成しているのですが、どのボタンも押すとリンク先が一つづつ隣のラベルにズレてきてしまいます。こんな感じスクリプト書いてみたんですが…。 menu1_btn.onRelease = function() { gotoAndStop(label_top); }; ボタンとスクリプトを配置しているのはAムービークリップ内で、リンク先のフレームラベルはメインのライムラインになります。 使っているソフトはFlash MX 2004 Plofessonalです。 基本的なことで申し訳ないのですが、どなたか原因と対処方法を教えてください。

  • ターゲットパスでフレーム指定はできますか

    FlashCS3で作業中です。 メインタイムラインの中の、6フレーム目にsyousai6というムービークリップがあります。9フレーム目にsyousai9というムービークリップがあります。 このsyousai9の中の2フレーム目にボタンを設置し、押したらsyousai6の9フレーム目に画面が切り替わるようにしたいのですが、ビヘイビアパネル>ムービークリップ>フレームまたはラベルへ移動して再生を停止 で、 on (release) { //Movieclip GotoAndStop Behavior this._parent.syousai6.gotoAndStop("9"); //End Behavior } と記述しても無反応です。絶対パスにしても結果は同じでした。どこか記述が間違っていますでしょうか?

  • ActionScript3.0 子→孫の扱い

    親 子 孫  の三層構造があるとします。 孫のタイムラインの1フレーム目に this.stop(); と書き 2~10フレームにモーショントゥイーンを作成します。 そして子のタイムラインの5フレーム目に trace("孫スタート"); 孫.play(); this.gotoAndStop(1); と書きます。 実行してみると、「孫スタート」とと出力されるのに、孫が動きません。 もしかして、1階層上が止まると、その下の階層は止まってしまうのでしょうか? ですが、私は作りやすさの面で、子が止まっても、孫が動くようにしたいのですが、方法はありますか? それとも、 親の中に 子(1) 子(2)(さっき孫だった物)  を入れて、子(1)の中に trace("子(2)スタート"); MovieClip(parent).子(2).Play(); this.gotoAndStop(1); こうしなければなりませんか? 回答よろしくお願いします。

    • ベストアンサー
    • Flash
  • Flash cs4 ランダム再生

    Flash初心者です。 やりたいことはホームページ上でアニメーションを再生させる際に、複数パターンのアニメーションをページをリロードするたびにランダムに切り替えるということです。 Flashにてアニメーションのタイムラインを複数パターンつくり、ランダム再生をActionScriptで制御するものを作成したいと思います。 アニメーションのタイムラインを作成しムービーシンボルとしたものを複数作成し、それをシーン1のタイムラインにて各フレームに配置して、1フレーム目にActionScriptにてgotoAndStop(ランダムフレームの記述?);とすればいいのかなと思っているのですが、正しいでしょうか? 現状ではアニメーションのムービーシンボルは必要なパターンだけ作成しました。 シーン1のタイムラインに配置まではしたのですが、ActionScriptの記述が素人なものでさっぱりわかりません。 どなたか教えていただけませんか? 自分なりにやってみたのですが、ランダム関数(?)以前にgotoAndStop()すら思うようにいきませんでした。 Flashはcs4を使用しております。ActionScript3.0のプロジェクトにして添付画像のように1フレーム目に gotoAndStop(10); としてみたのですが、パブリッシュしたswf ファイルは真っ白のまま何も動いてくれません。 gotoAndstop(10); としてみたらstopせずにタイムラインを再生しているようで、各アニメーションの最初のフレームだけが切り替わるものになってしまいました。 ともにコンパイルエラー 1180:未定義である可能性が高いメソッドgotoAndstopの呼び出しです といわれます。 ActionScriptが2.0と3.0とどちらがいいのかもわかってない状態ですが、ご教授願います。

    • ベストアンサー
    • Flash
  • ボタンの中にボタンを作るには?

    ボタンの中にボタンを入れたいのですが、中にボタンを入れると一番外のボタンに命令していたスクリプトがいうことを聞かなくなってしまいます。ちなみに外のボタンには on(rollOver){ gotoAndPlay(フレーム); } on(rollOut){ gotoAndPlay(1); そして10フレームほどトゥイーンがあり、10フレーム後のボタンには } on(rollOver){ gotoAndStop(10フレーム後); } on(rollOut){ gotoAndPlay(1); } と書いています。このボタンは、あるボタンを押すと出てくるようになっています。このボタンの中に文字でボタンを入れたく、また、見え方も外のフレームと一緒にしたいです。 わかりづらい説明で申し訳ないのですが、よろしくお願いいたします。 よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • タイムラインを定期的にスタートさせるには?

    AS3.0でCS5です。 下記のようにタイムラインをコントロールする為のスクリプトを教えてください。 例えば、フレームは1フレームから100フレームまであるとします。ムービーが読み込まれてタイムラインが1から100まで移動します。その100フレームで一旦タイムラインが停止します。停止後、例えば3分後に、再びフレーム1に戻り、ムービーがスタート。その後同じように100フレームで停止…その後3分後に…と言う感じで、3分毎にムービーがスタート…1フレームに戻り100フレームで停止…それをエンドレスで行いたいのです。 その場合、1フレーム(又は100フレーム)に記述するスクリプトを教えてください。 よろしくお願い致します。

    • ベストアンサー
    • Flash
  • メインのタイムラインに戻るボタン

    同じような質問を幾つかあたってみたのですが上手くいかなかったので質問させていただきます。 FLASH8でFLASHを作成しています。 メインになるタイムライン上にムービークリップでウィンドウを作りました。 更にその中(ドラッグした時に一緒に動かす為、入れ子にしている)に、ウィンドウを閉じる為のボタンを作りました。 ウィンドウを閉じた状態にする為には、メインのタイムラインにある "main"というフレーム名の場所に戻らなければならないのですが、ボタンが反応せずウィンドウを閉じる事が出来ません。 現在ボタンには on (release) { _root.gotoAndStop("main"); } このアクションスクリプトを記述しています。

    • ベストアンサー
    • Flash
  • Flashでボタンをクリックすると表示・非表示するには?

    お世話になります。 ボタン「buttonC」に以下のスクリプトを記入し、クリックするとターゲット「C」が表示されるようにしています。「C」はタイムライン1では非表示で、タイムライン2以降で表示されるようにしてあり、「buttonC」をクリックすると「C」のタイムラインが2に移動するという仕組みです。 on (release) {  with (C) {   if (_currentframe == 1) {    gotoAndStop(2);   } else {    stop();   }  } } on (release) {  buttonC._alpha = (50); } 更に「buttonC」はクリックするとアルファ=50%になるようにしています。 この状態で、もう一度クリックすると、「C」を非表示(タイムライン1に戻す)にし、「buttonC」のアルファを100%にするように設定したいのです。Flagを使ってみたのですがどうも上手くいきません。 以下は試したスクリプトです。 on (release) {  if (playmode=1) {   with (C) {    if (_currentframe == 1) {     gotoAndStop(2);    } else {     stop();    }   }  } } on (release) {  if (playmode=1) {   buttonC._alpha = (50);   playmode = 2;  } } on (release) {  if (playmode=2) {   buttonC._alpha = (100);   C.gotoAndStop(1);   _root.playmode = 0;  } } 他の方法でも構わないので、良い方法がありましたら教えてください。 よろしくお願いいたします。

  • Actionscript3でMovieClipのタイムラインからシーンの頭出し

    現在Actionscript3で行き詰っています… シーンの中に配置したMovieClipのタイムラインが最後まで来たら、シーンの頭に戻したいと考えています。 そこでMovieClipの最後のフレームに gotoAndStop(MovieClip(parent)); と記載しましたがうまくシーンに移動せず、そのMovieClipのタイムラインをループしています。 ほかにも gotoAndStop(MovieClip(root)); とか、シーンにラベルをつけて gotoAndStop("ラベル名"); も試してみましたが、うまくいきません.. 初歩的なことだったらすみません… わかる方がいらっしゃいましたら、ご教授いただければと思います。

  • FLASHのボタン

    FLASH8で、ホームページのメニューボタンを作っております。 デザインとしては、 (1)ボタンに、マウスカーソルを乗っけると、 (2)そのボタンが、”クルクルと2回転し停止”する ※”クルクルと2回転して停止”が終わる前に、 マウスカーソルをそのボタンから離しても、 その”クルクルと2回転して停止”というムービー(アクション?)はきちんと最後まで再生させる ようにしたいと思っております。 ”2回転させて停止”させるまでは、ムービークリップの、 最初のフレームに『start();』を、 最後のフレームに『stop();』のactionscriptを入れることでなんとかできるようになったのですが、 どうしても、上記の※の部分が出来ません・・・ マウスカーソルをボタンから離すと、”クルクルと2回転して停止”が完了する前に、ピタッと、最初の静止した状態のボタンに戻ってしまいます。 どなたか、解決法を教えていただけないでしょうか。