• ベストアンサー

Flashゲームのセーブ機能の作り方

こんにちは。 今、Flash8を使ってアドベンチャーゲームを作っています。 ゲームの内容が長めなので、ゲーム内の1日ごとにセーブポイントを設けようかと思っているのですが、調べてみてもいまいちよくわからなくて困っています。SharedObjectを使うのはわかったんですが・・・ 1、「セーブする」ボタンで現在のタイムライン位置と、変数とその値を保存する。 2、「続きから」ボタンで保存した変数とその値を呼び出し、前回セーブしたところへジャンプする。 アクションスクリプトに詳しい方ご回答よろしくお願いします。 現在使用してるOSはWindowsXPです。

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

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

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

_root(メインムービーのタイムライン)の直下に, 「continue_btn」と「save_btn」というインスタンス名を付けたボタンがあった場合,  _root    ├ continue_btn(続きからボタン)    └ save_btn(セーブボタン) _root の フレーム1 とかその辺りのフレームのキーフレームに, 次のようなスクリプトを書けば良いと思います。 ----------------------------------------- // とりあえず _root の再生を停止 _root.stop(); // SharedObject my_so を作成し saveData データを得る var my_so:SharedObject = SharedObject.getLocal("saveData"); // 「続きから」ボタン continue_btn クリック時の動作定義 continue_btn.onRelease = function() { // もし my_so 内データの frame_num 存在していなければ if (my_so.data.frame_num == undefined) { // _root を フレーム2 から再生 _root.gotoAndPlay(2); } else { // _root を my_so 内データの frame_num から再生 _root.gotoAndPlay(my_so.data.frame_num); // --- // my_so 内データの frame_num の値を出力(検証用) trace("前回セーブしたフレーム番号="+my_so.data.frame_num); // my_so 内データの hensuu の値を出力(検証用) trace("前回セーブした適当な値="+my_so.data.hensuu); } }; // 「セーブする」ボタン save_btn クリック時の動作定義 save_btn.onRelease = function() { //(_root の再生を停止(要不要は不知) ) _root.stop(); // my_so 内データの frame_num に _root の現在フレームを保存 my_so.data.frame_num = _root._currentframe; // my_so 内データの hensuu に適当な値を保存 my_so.data.hensuu = Math.floor(Math.random()*100); // --- // my_so 内データの frame_num の値を出力(検証用) trace("今回セーブしたフレーム番号="+my_so.data.frame_num); // my_so 内データの hensuu の値を出力(検証用) trace("今回セーブした適当な値="+my_so.data.hensuu); }; -----------------------------------------  

hisako1986
質問者

お礼

とてもわかりやすいご回答ありがとうございます!助かりました^^

関連するQ&A

  • Flash で、サウンドを停止させたいです。

    Flash で、サウンドを停止させたいです。 Flash でアドベンチャーゲームを作っています。 SharedObjectを使って、セーブ&ロード機能をつけました。 (環境) Flash バージョン - Adobe Flash CS4 ActionScript - ActionScript 1.0 & 2.0 画像にあるように、880フレーム目からBGMを再生されるようになっています。 900フレームで停止し、メニュー画面になります。 ここにロードボタンがあり、押すと以前セーブしたフレームにジャンプします。 その際に、880フレーム目に配置したBGMが流れっぱなしになってしまいます。 ボタンを押したと同時に、このBGMを停止するにはどうしたらよいでしょうか? よろしくお願いします。

    • ベストアンサー
    • Flash
  • FLASHとデータのセーブについて

    FLASHでゲームを作り、ウェブサイトに設置しようと考えています。そこで、下記のようなことを行いたいのですが可能でしょうか。もし可能でしたら、どのような方法があるか教えてください。  1. 利用者がゲームを終了するときに、ゲーム内容を記録(セーブ)するボタンを押す。  2. 利用者のもとにテキスト文書(txtファイル)のセーブデータが作成される。  3. 利用者がゲームを再開するときに、"はじめから"や"つづきから"などの選択肢を表示させる。  4. 利用者が"つづきから"を選ぶと、利用者のセーブデータを読み込み、前回の続きからゲームができる。 使用ソフトは、FLASHMXです。よろしくお願いします。

    • ベストアンサー
    • Flash
  • FLASHでタイピングゲームをつくるにはどうしたら良いですか?

    今FLASH8でタイピングゲームを作ろうとしているのですが、独学の初心者なので作り方とか、アクションスクリプトとかがよくわかりません。 参考になりそうなホームページや参考書、サンプルなどがあればぜひ教えてください!!お願いします!!

  • Flashについて

    現在FlashCS5 actionscript2.0でサイトを制作しております。 内容としましては、TOPページに簡易的な音楽プレーヤー(再生・停止・一時停止)が あり、サイト訪問時に音楽が再生するというものです。 今回の質問なのですが、初回訪問時に音楽再生をさせ、2度目以降の訪問時には 音楽をとめる。ただし、再生ボタンを押すと再び音楽が再生するということを行いた いのです。 色々調べてみて、下記の方法が近いのではと思いました。 ただ、下記の方法だと再生ボタンが効かなくなってしまいます。 なにか良い方法はありませんか? ------------------------------------------------------------------------------- 【Flash Q&A参照】 アクションレイヤー、1フレームのフレームアクション・・・ span = 15; ←変数spanを定義、そこに一定の秒数以内の値を設定(例は「15秒以内」)  nowDate = new Date(); ←現在年月日時分秒を取得、nowDateというDateオブジェクトを作成  nowAC = nowDate.getTime(); ←その時点の世界標準時点からの経過ミリ秒をnowACに代入  cookie = SharedObject.getLocal("accessTime"); ←cookieという名のHD読書きオブジェクト  if (cookie.data.beforeAC != undefined) { HD変数beforeACが未定義でないなら    Time = Math.floor((nowAC-cookie.data.beforeAC)/1000); ←Timeに経過秒数を代入    cookie.data.beforeAC = nowAC; ←HD変数beforeACに今回経過ミリ秒を保存    if (Time < span) { 経過秒数が、変数spanの値より小さいとき      this.gotoAndStop("menu"); ←”menu”フレームに移動して停止    }  } else { そうでない(初回アクセス)なら    cookie.data.beforeAC = nowAC; ←HD変数beforeACに今回経過ミリ秒を保存  } -------------------------------------------------------------------------------

  • セーブの仕方を教えて下さい

    今HSPというプログラムという言語でRPGを作ってます。 それで、セーブ機能を追加したいのですがやり方が分りません。 理想はタイトル画面が出てきて 「はじめから」「つづきから」というのが出て「つづきから」を押すと セーブ・ロード画面がでてきてセーブ・ロードができるような感じです。 あとダンジョンとかにセーブポイントがあって そこでもセーブできるようにしたいです。 変数とかはどうやって保存すればいいのでしょうか? プログラムの書き方がわからないので教えてください。 よろしくお願いします。

  • Flashのセーブ機能の作り方

    こんにちは。はじめて質問させていただきます。 説明に不備がございましたら、申し訳ございません。 Flash暦は長くないのですが、 CS3 AS2.0を使用して、現在着せ替えを製作しております。 服や髪のアイコンを用意し、visibleを使ってアイコンをクリックで該当の箇所に 該当の服や髪を表示したり非表示にして着せ替えを作ることができました。 はじめは外部swfを読み込んでいたのですが、保存機能をつけたいため 上記のような仕様に変更いたしました。 しかし、保存がうまくできません。 1フレーム目にガチャへ、お家へ、アバターへといった選択肢を設け 2フレーム目にアバターを作っております。 2フレーム目には 「読み込み」「保存」ボタン 各アバターを表示させるためにクリックするアイコン「a1_1」「h1_1」 クリックで表示されるアバター画像「a1」「h1」 こちらを配置しております。 a1を髪と致しまして、h1をスカートにしています。 (2フレーム目)メインに ---------------------------- stop(); save=SharedObject.getLocal("sample"); ---------------------------- こちらを記入しており a1を表示させるためにクリックするアイコンには ---------------------------- on (release) { a1._visible=true; a1 = true; } ---------------------------- h1も同様にしてあります。 「保存」をボタンシンボルに変更し ----------------------- on(release){ _root.save.data.check=1; _root.save.data.a1=_root.a1; _root.save.data.h1=_root.h1; } ----------------------- 「読み込み」ボタンも同様にボタンシンボルに変更し ----------------------- on(release){ _root.a1 = _root.save.data.a1; _root.h1= _root.save.data.h1; } ----------------------- ちなみに表示される髪自体には ----------------------- onClipEvent(load){ _visible = false; } ----------------------- このような記載をしております。 アイコンクリックで画像の表示はされるのですが、 「保存」「読み込み」ができません。 いろいろ調べては見たのですが、どうしてもわかりませんでしたので 質問させていただきました。 どうか、アクションスクリプトに詳しい方ご回答よろしくお願いします。 また、もしこれを ---------------- on(press){ startDrag(this); } --------------- --------------- on(release){ stopDrag(); } --------------- これらを使って動かせるようにした場合 動かした状態を保存することなどはできるのでしょうか? また、外部swfを使った着せ替えの場合、保存はできないのでしょうか? 外部swfの場合アイコンには -------------- on (press) { _root.loadpoint2.loadMovie("he6.swf"); _root.loadpoint2.gotoAndPlay(1); } -------------- loadpoint2=空のムービークリップ he6.swf=髪型の配置してあるswf たくさん聞いてしまってすみません… ここでの質問も、Flashも初心者のため 情報不足でしたら大変申し訳ございませんが、 どうかご教授いただければと存じます。

    • ベストアンサー
    • Flash
  • Flash 8 レベル反復

    Flash8 Win-XP で作業しています。 SharedObject を利用したデータを制作していますが、ある「btn_script」を押すと、 1 つのアクション内で 256 レベルの反復を超えました。 無限ループの可能性があります。 このムービーではこれ以上のアクションの実行は無効になります。 と「出力」されます。 この警告はなにを意味するものでしょうか? ・データ全体に関する「警告」でしょうか? ・このスクリプトのみに関する「警告」でしょうか? ご存知の方教えていただけませんでしょうか?

    • ベストアンサー
    • Flash
  • FLASHで

    FLASHのアクションスクリプト2.0でペイントゲームみたいなものを作ってます。 キャンバスに絵を書いた後、設置されているボタンを押すと、jpgで保存される こんな保存機能のようなものを作ることはかのうでしょうか?

  • 変数名に変数を使う

    Flash8を使用し、ActionScript2で書いています。 変数名に、他の変数の値を参照したいと考えています。 http://www.flash-jp.com/modules/newbb/viewtopic.php?topic_id=6679&forum=6 を見て、同じようにやってみました。 すると、 animal = "cat"; catlLegs = 4; とした場合、animalの値であるcatを参照し animalLegs = 4; とする、というような単純なものはうまくいきました。 しかし、SharedObjectのdataプロパティで、属性名を変数にしようとすると うまくいきません。 dataNameという変数に、soというSharedObjectのneko属性の値を代入する場合、 so:SharedObject = SharedObject.getLocal("hoge"); animal = "neko"; dataName = _root["so.data."+animal]; としたのですが、 trace(dataName); の値はundefinedになってしまいます。 なお、 trace(_root.so.data.neko); では正しく値が表示されます。 属性名前には他の変数の値を参照できないのでしょうか。 それともSharedObjectではできないのでしょうか。 なんとか実現する方法をおしえていただければと思います。 よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • JPEGイメージをFLASHで動かしたい!

    元々あるjpegイメージをアクションスクリプトで動かしてみたいです。具体的に言うとボタンのアクションでjpeg画像がスクロールしたりスライドしたり…この場合アクションスクリプトを勉強しなければならないと思うのですが良いサイト、良い教則本など教えていただけないでしょうか?あくまでアニメではなくjpegを色々動かしてみたいのです。よろしくお願いいたします。ちなみに僕のはFLASH5です。

専門家に質問してみよう