dポイントプレゼントキャンペーン実施中!

こんにちは。
今、Flash8を使ってアドベンチャーゲームを作っています。
ゲームの内容が長めなので、ゲーム内の1日ごとにセーブポイントを設けようかと思っているのですが、調べてみてもいまいちよくわからなくて困っています。SharedObjectを使うのはわかったんですが・・・

1、「セーブする」ボタンで現在のタイムライン位置と、変数とその値を保存する。
2、「続きから」ボタンで保存した変数とその値を呼び出し、前回セーブしたところへジャンプする。

アクションスクリプトに詳しい方ご回答よろしくお願いします。
現在使用してるOSはWindowsXPです。

A 回答 (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);
};
-----------------------------------------
 
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/11/27 23:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!