• ベストアンサー

ActionScript

ActionScript を教えてください。 ドキュメント全体を透明なボタンでおおい、 画面をクリックすると次のフレームに進み、 左から右にマウスをドラッグすると前のフレームに戻るようにするにはどうしたらよいでしょうか? 進む方は、 on (release) { nextFrame(); } で、できたのですが、戻る方が全くわかりません。

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

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

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

肝腎なバージョンを書かれていませんが。。。 > on (release) { > nextFrame(); > } これは Flash 5 以上 で使用できる範囲の ActionScript 1.0 ですね。 しかし。。。 Flash 5(12年くらい前のバージョン) は古すぎて 構造作り直しなども大変(回答するのもかなり面倒)になりますから 勝手に Flash MX 以上をお持ちで ActionScript 1.0 を使うものということに決めます。 Flash MX 以上とは Flash MX,Flash MX 2004,Flash 8,Flash CS3,Flash CS4,… のことです。 まずは 「ドキュメント全体をおおう透明なボタン」からですが これ自体に書かれた on (release) {…} などのスクリプトを全て消します。 そして ステージ上のその透明ボタンを選択して プロパティインスペクタより「インスタンス名」を付けます。 ここでは「btn」というインスタンス名を付けることにしておきます。 ※参考【添付図】↓ そしてスクリプトを書くためのレイヤーを別に用意して (すでに用意してあればそのレイヤーで良いです), そのレイヤーのフレーム(フレーム1 など)に次のように書きます(コピペ可)。 //---------------------------------- //このタイムラインの再生を停止 stop(); //ドラッグする px 数の設定(※適当に変える) var drag_px = 50; //マウスを監視するオブジェクトを作成 var obj = new Object(); //マウスのリスナーとして obj を登録 Mouse.addListener(obj); //マウスをプレスした x座標 を入れる変数の宣言 var press_x; //「btn」プレス時の動作を定義 btn.onPress = function() { // //マウスをプレスした x座標 を変数に入れる press_x = _xmouse; // //「btn」クリック時の動作を定義 btn.onRelease = function() { //「btn」クリック時の動作を削除 delete btn.onRelease; //マウスが動いた時の動作を削除 delete obj.onMouseMove; //このタイムラインを次のフレームに進める nextFrame(); }; // //マウスが動いた時の動作を定義 obj.onMouseMove = function() { //マウスの座標がプレスした x座標 より drag_px 以上右になれば if (_xmouse>=press_x+drag_px) { //「btn」クリック時の動作を削除 delete btn.onRelease; //マウスが動いた時の動作を削除 delete obj.onMouseMove; //このタイムラインを前のフレームに戻す prevFrame(); } }; }; //---------------------------------- ※Flash MX 以上で使用可   Flash Player 6 以上で動作可   ActionScript 1.0(パブリッシュ設定は 2.0 でもOK) 「どれくらい(どこからどこまで)右にドラッグした時に前のフレームに戻すのか?」 などがわからなかったため勝手に, //ドラッグする px 数の設定(※適当に変える) var drag_px = 50; のようにして 50px 以上右にドラッグしたときにフレームを戻すようにしていますが この数値は適当に 10 とか 100 とかに変えてください。 あと, 「ドラッグ」には「ドロップ」が付き物です。 つまり 「マウスプレス」には「マウスアップ」が付き物です。 何が言いたいのかというと 「ドラッグ終了時に Flash 上でマウスアップする」ということは, 「ドキュメント全体をおおう透明なボタンをクリックする」のと同じことになるのです。 ですから「ドラッグ」が成立したときには 「透明なボタンクリック」を無効にしなければなりませんよね? でないと,また元のフレーム(次のフレーム)に戻ってしまいます。 そんなこんながあったり on (release) {} では スクリプトを書く場所が分散してしまってやりにくいので onRelease などを使うように変更しています。 ○○.onRelease=function(){}; や ○○.onMouseMove=function(){}; などを 「イベントハンドラメソッド」と言いますが これらは delete で削除することができるので使いやすいです。 on (release) {} など 「イベントハンドラ」の方は,スクリプトで削除できません。 もし on (release) {} などを使う方向で行く場合は 別にフラグとなる変数をいくつか用意するなどして 色々な条件分岐した動作を考える必要が出てきます。   ◎ 【添付図】↓ について バージョンがわからなかったので 適当に Flash 8 での画面↓を用意しましたが バージョンによって見かけは変わります。 Flash MX ~ CS3 までは比較的似ているかもしれませんが Flash CS4 以降は全く別な感じに見えると思います。

-mellotron-
質問者

お礼

うまくいきました!!!! 丁寧に説明していただいてありがとうございました。

関連するQ&A

  • actionscript

    FLASHを作成してますが、actionscriptでつまずいています。 シーンが1~5まであるFLASHで、 添付の画像のようなものです。 シーン2が 左のメニュー一覧はムービークリップになっていて、 その中にボタンがある状態(入れ子?)です。 ボタンをクリックするとシーン1の先頭に飛ぶようにしたくて on (release) { this._parent._parent.gotoAndStop("シーン 1","1"); } と書きましたがうまくいきません。 詳しい方いましたら教えてください

    • ベストアンサー
    • Flash
  • ActionScript3.0がわからない!

    ActionScript3.0がわからない! FlashCS4でアクションスクリプトを使ってボタンにアクションをつけたいです。 けど今までの方法が使えなくなっているのに愕然としました。 従来では、ボタンを作成しシーン上に配置した後ボタンを選択。右クリックから「アクション」を選択し、 on(release){getURL("http://okwave.jp/")} と書いておけばボタンを押したらリンク先に飛んでくれたのに、3.0ではボタン自体にアクションがつけれなくなっているではありませんか!! この時点で、もうお手上げ状態になっちゃいました。参考書読んでも訳わからんって感じです。どなたか、僕に教えてください。ボタンにアクションを与える方法を!

    • ベストアンサー
    • Flash
  • 変数が渡らない

    選択するための3つのボタンを作成し、それぞれ変数ansに値を格納しました。下記がそのActionScriptの例です。 ------------------------------- on(release){ ans=1; _root.nextFrame(); } ------------------------------- ボタンを押した後、別のレイヤーのフレームからMCを読み込みます。 しかし、ボタン内で格納した変数が読み込まれずundefined(未定義)となってしまいます。if文で分岐したいのですが出来ずに困っています。 ボタンをクリックすることで変数に格納した値を、ムービークリップのイベント内で読み込むことは可能でしょうか?

    • ベストアンサー
    • Flash
  • ActionScript3.0について教えていただきたいです。

    ActionScript3.0について教えていただきたいです。 下記の添付画像を参考にしていただくと理解しやすいかと思います。 FLASH CS4にて、フレームの移動を行いたいのですが、どうも上手くいきません。 「メニュー画面」でボタンを選択し、「サブメニュー画面」を表示するところまではできるのですが、 緑のボタンをクリックして、「目的のページ」に移動する事ができません。 「メニュー画面」から「サブメニュー画面」へは、 ボタン名.addEventListener(MouseEvent.CLICK,任意の関数名); function 任意の関数名(e:MouseEvent):void{ gotoAndStop(ページ数); } というスクリプトで動きますが、「サブメニュー画面」から「目的のページ」への移動ができない状況にあります。 どなたかわかる方いらっしゃいましたら、是非教えていただきたいです。 よろしくお願いします。

    • ベストアンサー
    • Flash
  • ActionScriptエディタを作りたい!です…

    毎度お世話になっておりますsassakunと申します。 変な回答をすることがありフォローを入れていただきありがとうございます。 Flashカテゴリでの質問は初心者です。 訳あってActionScriptエディタを作成中です。 「Flash Player de ActionScript」(今閃いた仮称)。 大した物ではないです。 テキストエディタでスクリプトを作る事が多々あるのですが,定型句みたいなものをキーボードを叩くのが面倒です。 またifをIFと書いてしまったり書き間違いが多いです。 蛇のアイコンのソフトも知っていますが,あれはFlashより使い勝手が悪い。 それなら自分で作ってしまおうと思ったのです。 TXTという変数名のダイナミックテキストエリアを作成し,あるボタンをクリックすると,そのボタンのスクリプトで  on (release) {   TXT = TXT + "ActionScript(値)"  } みたいなスクリプトで, 変数TXTにどんどんスクリプトを加算していく方法で大体はできました。 大体と言うのは自分がよく使うスクリプトの範囲内という意味です。 でも上のスクリプトだとどうしても文字列の後に,"ActionScript(値)" が付いてしまいます。 そうではなくて,  onClipEvent (load) {  | (←マウスカーソルのつもり)  } のカーソル部分に _root.stop(); などというスクリプトが入れたい場合が多々あります。 タグ挿入型HTMLエディタならぬ,Script挿入型ActionScriptエディタです。 イメージをスクリプトにするなら, on (release) {  TXT1 = TXT の1文字目からカーソルまで;  TXT2 = TXT のカーソルから最終文字まで;  TXT = TXT1 + "ActionScript(値)" + TXT2; } みたいな感じです。 これを実現するActionScript,または方法はあるのでしょうか。 そんなことも知らないのか! などと思われそうな気もしますが,ここでの質問は初心者ですのでよろしくおねがいします。

    • ベストアンサー
    • Flash
  • nextFrameで最後のフレームの後先頭に戻る

    FLASH8 AS2.0 先ほど質問を自己解決しながら、 すぐに壁に当たってしまいました; 度々申し訳ありません。 現在フォトギャラリーを作製していまして、 以下のASでムービークリップ内のフレーム移動することが出来ました。 on (release) { _root.main.nextFrame(); } 例えばムービクリップ内の10フレーム全てnextFrameで移動した後、 もう一度ボタンをクリックするとムービークリップ内の先頭(1フレーム目)に 戻るにはどうしたらよいのでしょうか。 また、同様にprevFrameを用いて1フレーム目まで移動し、 もう一度押すと10フレーム目に移動できるようにするにはどうしたらよいでしょうか。 どなたか分かる方教えて頂けないでしょうか。 宜しくお願い致します。

    • ベストアンサー
    • Flash
  • Flashでボタンをつくっているのですが、actionscriptをつ

    Flashでボタンをつくっているのですが、actionscriptをつかってボタンをクリックさせたいのですが、アクションパネルのところに「現在の選択範囲にアクションを割り当てることはできません。」と表示されてしまいます。 参考書に附属されているflaをみたところ、Actionscript1.0、2.0となっているのですが、作成しているのはActionscript3.0で作っています。 ====== on (release) { /*↑ボタンが押されて離されたら*/ _parent.gotoAndPlay("about"); /*↑「about」ラベルへ移動*/ } ====== このようなscriptをいれたいのですが、うまくいきません。 ムービークリップでボタンを作るまではできました。その後、何かが抜けているのかして上記のようなエラーがでます。 flash初心者のため、どういう風に書いて質問させていただいたらよいのかわからないのですが、参考flaと見比べたときに「シンボル定義」のなかにあるムービークリップがひとつたりませんでした。(このムービークリップは「navigation」というものですのでそれがありません。) 質問するにはあまりにも情報が少ないかもわかりませんが、何卒ご教授いただけると大変助かります。 宜しくお願い致します。

    • ベストアンサー
    • Flash
  • ActionScriptで画像と文字を表示

    ActionScriptで1フレーム目にボタンをおいて2フレーム目に 任意のjpg画像を表示させたいのですができません。 同一フレーム内で on (press) { image.loadMovie("hoge.jpg"); } とすれば表示はできました。

    • ベストアンサー
    • Flash
  • 逆再生の方法について ActionScript

    FLASH8を使用しています。 FLASHを使って、ホームページのメニューを作りたいと思っています。 そこで、SONYのホームページのようにボタンを押すと、メニュー画面がスクロールして表示され、もう一度ボタンを押したらフレームが逆再生されてメニュー画面が消えるようにしたいのですが、どのようにすればよいでしょうか?? 初心者なりに、prevFrame()を使って頑張ってみたのですが、うまくできませんでした。 aaa=0; if(aaa%2){ nextFrame(); }else{ prevFrame(); } とし、ボタンアクションで on(press){ aaa=aaa+1 } としたらうまくいくかなぁ~と考えてみたのですがうまくいきませんでした(涙)。初心者には荷が重すぎました・・・。 デバッガでエラーはでないのですが、動きませんでした。 もし、「ここはこうしたほうがいい」、「この関数では無理」などアドバイスをお願いします。

  • FlashのActionScriptについて

    FlashのActionScriptについて質問です。 Yesか Noを選択する、診断テストみたいなフラッシュを作りたいのです。 1フレームには一番はじめの Yes Noが表示されています。 それのどちらかのボタンをクリックするまで、次のフレームに流れないようにするには、 1フレーム目にstop();でよいのでしょうか? それとも、sotoAndstopとかなのでしょうか? また複数のレイヤーがあるときstop();などのアクションスクリプトは 全部につけなければいけませんか?