• 締切済み

ループを抜けて指定したフレームへ行きたい

大学の課題で簡単なFLASHゲームを作っているのですが アクションスクリプトの書き方で質問させてください。 最初の画面のスタートボタンを押したら、フレーム50からあるOPムービー的なものへ行き再生したいのですが うまくいきません。 最初のページには森の絵があり、枝が揺れているので 枝を揺らすために 別にアクションスクリプトを記述するだけのレイヤーをつくり this.gotoAndPlay(19) と書いてします。 この事で、全てのレイヤーが19~40をループしているようです。 スタートボタン(ボタンで作りました)を押す事で、 このループを抜けて、50フレームに行くのはどうしたらいいでしょうか 昨夜から本やサイトを見ているのですがどうにも失敗します on(press)関係をボタンをつけたレイヤーに書くとthis.gotoAndPlay(19)がきかず全て再生されてしまいます。 いまいちFLASHが理解できておらず、質問内容もガタガタですが 何とぞ宜しくお願いいたします。

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

みんなの回答

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

#1(ANo.1)です。  犬をつかまえて「投げたフリスビーを取れ」と命令するのです。  (ボタンを選択して「フレーム50に進めろ」とめいれいするのです。) > ボタンを編集するところでは(アップ、オーバー、ダウン等のあるところです) それは,犬で言えば内臓です。 犬の肝臓に 「投げたフリスビーを取れ」 と命令はできないでしょう? > 「マウスイベントはボタンインスタンスでのみ使用できます」 「マウスイベントは」 とは #1 で書いた onハンドラ のことです。 onハンドラ は元来ボタンにしか書けなのでそういうメッセージが出るようになっています。 Flash MX 以降(Flash Player 6 以降)になって, ムービークリップ自体にも書けるようになりましたが, 元来 onハンドラ は ボタンにしか書けなかったので, フレームを選択して onハンドラ を書こうとすると,   「マウスイベントはボタンインスタンスでのみ使用できます」   → onハンドラ は ボタン自体 のみに書けます というメッセージが出ます。 実際は   「マウスイベントはボタンインスタンスもしくはムービークリップインスタンスでのみ使用できます」 に変更すべきでしょうが,そう変更されていないようです。 そんなことはどうであれ, 「ステージ上のボタン」をひっ捕まえてActionScriptを書くのです。 レイヤー(フレーム)ではありません。 ステージ上に見えているボタンです。 あと,ひょっとして, ファイル→パブリッシュ設定でFlashタブを選択すると, ActionScript のバージョンが ActionScript 3.0 に設定されていませんか? onハンドラ は ActionScript 2.0 以下 に存在するスクリプトで ActionScript 3.0 にはありませんよ。 もし パブリッシュ設定 で ActionScript のバージョンが ActionScript 3.0 に設定されていたならば, ActionScript 2.0 や 1.0 にすべきです。 (というか, もし ActionScript 3.0 に設定されていたならば, > on(press)関係をボタンをつけたレイヤーに書くと などという表現はしないはずです。 ご質問に > on(press)関係をボタンをつけたレイヤーに書くと と書かれていらっしゃるので, こちらは自動的に ActionScript 2.0 以下だと判断して回答しています。)

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

> on(press)関係をボタンをつけたレイヤーに書くと ここの部分が一番わかりませんね。 on(press) や on(release) や on(rollOver) など onハンドラは レイヤー(フレームのこと?)には書けませんよ。 onハンドラ は ボタン(またはムービークリップ)を選択して, その状態で表示されるアクションパネルに書くスクリプトです。 つまり onハンドラ は ボタン自体(またはムービークリップ自体)に書くスクリプトです。 ですから, ボタンを選択して, そのボタン自体に ------------------------- // このボタンをプレスしたとき on(press){ // このボタンがある階層をフレーム50に進めて停止 gotoAndStop(50); } ------------------------- などと書けば良いだけかと思いますが。 ※ 通常の クリック を示すスクリプトは,   on(press) [←押したとき]ではなく   on(release) [←押して放したとき] ですが...。

ssamare
質問者

お礼

回答ありがとうございます、そして申し訳ないのですが成功しません ボタン自体(またはムービークリップ自体)に書くとのことですが ボタンを編集するところでは(アップ、オーバー、ダウン等のあるところです) 「現在の選択範囲にアクションを割り当てる事はできません」 といわれ シーンでボタンを選択して書くと エラーのところに 「マウスイベントはボタンインスタンスでのみ使用できます」と言われてしまいます 初歩的なことかもしれませんが、記述するところについて詳しく教えて頂けると幸いです 申し訳ございません

関連するQ&A

  • ループの回数を指定するには?

    現在、Flashでバナーを作っています。3回ループしてからムービーを停止させるにはどうしたらいいのでしょうか? for(1=0; i<3; i++){ ←3回繰り返す gotoAndPlay(1);   ←最初のフレームに戻り再生 } というスクリプトを最後のフレームで指定していますがうまく再生されません。どなたかご存知でしたらお教えください。よろしくお願いします。

  • フレームラベルを使った複数指定について

          |1     |5   |10    |15   |20 レイヤー1 |▲*1*   |▲*2* |▲*3*   |▲*4* |▲*5* | レイヤー2 |●>--→|●--→|●>--→|●--→|●--→| レイヤー3 |●>--→|●--→|●>--→|●--→|●--→| レイヤー1にはフレームラベルが記入されています。 1フレーム目のレイヤー2のボタンは on(press){ gotoAndPlay("*1*"); gotoAndPlay("*2*"); } 1フレーム目のレイヤー3のボタンには on(press){ gotoAndPlay("*1*"); gotoAndPlay("*3*"); } としています。 こちらはきちんと正常に意図通りに動きます。 10フレーム目のレイヤー2には on(press){ gotoAndPlay("*3*"); gotoAndPlay("*4*"); } 10フレーム目のレイヤー3には on(press){ gotoAndPlay("*4*"); gotoAndPlay("*5*"); } としてみましたが、こちらは正常に動きません。 指定の仕方としては誤っているでしょうか? もし間違いでしたら正しい指定の仕方を教えてください。

    • ベストアンサー
    • Flash
  • ループ再生させたい

    単純に、最後のフレームに来たらまた最初のフレームに戻って えんえんとループさせたいのです。 最後のフレームにアクションで「gotoAndPlay(1);」でいいと思っていたのですがループしません。 バージョンはCS3です。 それと、CS3になってからActionScript3.0になったらしいですが、どう変わったのでしょう? 新規書類で2.0にするか3.0にするか選べるのですがどちらにしたらいいのかも分かりません。 アクションはせいぜいgotoAndPlayやGetURLぐらいしか使えないのですがその場合でも3.0の方がいいのでしょうか?

  • ムービークリップ再生後次のフレームへ移動しません

    アクションスクリプトを使って、テキストが下から上へ流れるようにムービークリップを再生し、テキストが流れ終わったところで次のフレームへ移動させたいのですが、フレームが移動せず困っています。 スクリプトは色々なところで調べて、やっとの事で下記のように書きました。 使用しているのはFlash MX 2004 です。 |○  □|○|  ←1.スクリプトレイヤー |●    □|  ←2.ムービークリップレイヤー |○|●→|●|  ←3.ムービークリップ後に再生したいレイヤー 1.のスクリプト(2つのキーフレームいずれとも) stop(); 2.のムービークリップのスクリプト onClipEvent (load) { spd =5; onClipEvent (enterFrame) { this._y = this._y-spd; if (this._y<=-10) { spd = 0; gotoAndPlay(2); } } 知り合いにお見舞いのメッセージをと思って作ったのですが、送ることが出来なくてとてもあせっています。 どうぞよろしくお願いします。

    • ベストアンサー
    • Flash
  • 二択のフレーム移動

    ボタンクリックで3216フレームか3062フレームの どちらかにランダムで移動させたいんですが、 アクションスクリプトをどう記述していいのか分かりません。 on (press){gotoAndPlay( この形の記述で出来るのでしょうか? それとも別の形なのでしょうか? 教えてください。 過去記事ではランダムに1から5の間のどれかに飛ばせる というものがおおく、特定の2フレームというのは なさそうでした…探しても見つけられませんでしたので、 どうぞお助け下さい。 当方バージョンは Flash8 プロフェッショナルです。

    • ベストアンサー
    • Flash
  • rollover時に、MCを動かしたい。

    ↓のような、flashを作りたいのです。 ttp://www.muratec.jp/index.html (最初にhを入れてください) 左のrolloverボタンはできたのですが、 rollover時に右に段々表示される画像を再生させる、 というactionscriptがよく分からず、動きません・・・。 全部シーン1でやっています。 ・レイヤー1 ボタンシンボル5つほど。 左のボタンを1つずつ分けて作ったものを用意して、 1つずつボタンシンボルで、フレーム1に。 ・レイヤー2からレイヤーレイヤー6 5枚の画像を用意して、MCにシンボル化。 それぞれフレーム1~5フレームに、 アルファ0からアルファ100にいくモーションを作成。 レイヤー7 アクションスクリプト 最初の1フレームと5フレーム目にstop(); ・ボタンシンボル アクション(gazou22_mcは、MC名です) on (rollOver){ this.gazou22_mc.gotoAndPlay(1); } ・MCの方の記述がよくわからず、動きません。。 何か作成方法等に関してなどありましたら、 合わせてアドバイスおねがいします。 よろしくおねがいします。

    • ベストアンサー
    • Flash
  • FLASH 特定のレイヤーのフレームのみループ再生したい。

    はじめまして。 ループ再生についてなんですが、 例えば レイヤー1にフレーム1~10があり、 フレーム8~10のみをループ再生したい場合 どうすれば良いのでしょうか?

  • Flash4でのBGMループ

    Win版Flash4を使っています。 ヘルプを見てもよくわからないので、質問します。 MP3のBGMを流したいのですが、 同時に、 ボタン上のマウスオーバーのアクションで、 フレーム移動を行いたいのです。 レイヤーにサウンドをインポートすると、 マウスオーバーでフレームを移動した際に、 曲も一緒に同じフレームに移動し、そこから再生されます。 フレーム移動に関係なく、曲が途切れずに、 ずっとループさせる 方法はあるのでしょうか? やりたいことは、 http://www.thevoid.co.uk/ や、 宇多田ヒカルのサイト http://www.toshiba-emi.co.jp/hikki/ で、行っているようなものです。 よろしくおねがいします。

  • 外部ファイルのフレームラベルにリンクをさせたい。

    こんにちわ。 色々、探してみましたが、頭がこんがらがってしまい、時間ばかりが過ぎて行くので質問させていただきます。 外部ファイルのフレームラベルにリンクをさせたいのですが、どなたかご存じの方ご教授ください。 flame.swfを読み込んだときは自動的にcontents1.swf→contents2.swfと進み、ボタンをクリックすると 指定されたフレームラベルにリンクさせたいのです。 色々試してみたのですが、うまく外部ファイルが読み込めなかったりボタンが機能しない状態です。 flame.swf contents1.swf contents2.swf flame.fla  kazari   ボタンの飾りグラフィクが置いてある。  button1-1 1-1(contents1.swf内1-1フレームラベルにリンクするボタン)  button1-2 1-2(contents1.swf内1-2フレームラベルにリンクするボタン)  button2-1 2-1(contents2.swf内2-1フレームラベルにリンクするボタン)  button2-1 2-2(contents2.swf内2-2フレームラベルにリンクするボタン)  mytarget mytarget(movie clip。ここにcontents1.swfもしくはcontents2.swfを読み込ませる) 1 フレーム目のアクションスクリプトに stop(); button1-1のボタンスクリプトに on (release) { gotoAndPlay("1-1"); /コメント:フレームラベル1-1にボタン飾りがあるため同じシーン内の「1-1」に行くように/ } 1 フレーム目のmytargetアクションスクリプトに onClipEvent (load) { loadMovieNum("contents1.swf", 1); } フレームラベル1-1のmytargetアクションスクリプトに onClipEvent (load) { this.mytarget.loadMovie("contents1.swf" , 1); flg='contents1.swfのフレームラベル'; } contennts1(2).fla 1フレーム目のアクションスクリプトに stop(); gotoAndPlay(flg); 環境:Max OS 10.3.6 Flash8

    • ベストアンサー
    • Flash
  • 複数ボタンで指定のフレームに移動

    CS4、ASは3.0を使用しています。 ASについてはまったくの初心者です。 お店のFLASHを作成しています。構成は ちょっとしたオープニングムービー ↓ ボタンが4つ出てくる ↓ その各ボタンを押すと指定したフレームに飛ばす というものです。飛ばし先でもそこから再生するためplayになります。 各ボタンにはインスタンス名を付けています。 本のサンプルやネットで調べても、まったく同じ状態のスクリプトがわからなかった為、似たようなヤツをアレンジしてかなり色々と試したのですが、全て上手くいきません。 一番近かったのが下記のようになります。 ボタンのインスタンスはmenuです。 this.menu.addEventListener(MouseEvent.CLICK,goNext); function goNext(e:MouseEvent):void { this.nextFrame(); } これをアレンジして(69のフレームに飛ばす) this.menu.addEventListener(MouseEvent.CLICK,goNext); function goNext(e:MouseEvent):void { this.gotoAndPlay(69)(); } としたのですが、エラーが出てダメでした。 その他諸々、色々なスクリプトを試しましたが、 殆どが 「TypeError: Error #1009: null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません。 at _fla::MainTimeline/frame1()」 とエラーがでます。 スクリプトがダメなのか、それともスクリプトを配置する場所がダメなのすらも分かりません。 1.指定のフレームに移動するスクリプトを教えて下さい。 2.スクリプトを配置する場所は1~4のウチでどうれでしょうか? (どの場所に配置してもエラーがでます。又、タイムライン上にすでに配置されているスクリプトは○秒ストップというスクリプトです) 丸一日これに費やしたのですが、まったく出来ず困ってます。 よろしくお願い致します。

    • ベストアンサー
    • Flash

専門家に質問してみよう