• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:*SharedObjectで保存したデータは…*)

SharedObjectで保存したデータは…

noname#35109の回答

  • ベストアンサー
noname#35109
noname#35109
回答No.2

#1です。 書かれているそれだけを見るならスクリプトは合っています。 そんなに深く考えるものでもなく, 1つのムービークリップから _root に変数を置く感覚で良いのですよ。 chara に何か値が入った後に _root.player_name = chara; で _root の player_name に変数を送っていればうまく行きます。 ~うまく行く例~ a.swf に chara という変数名の テキスト入力のテキストフィールドを用意しておいて, そのテキストフィールドに例えば abcd と"Flashの作成段階"で書いておきます。 その a.swf を読み込む方には loadMC というインスタンス名のムービークリップと player_name という変数名のテキストフィールドを用意しておいて, フレームに _root.loadMC.loadMovie("a.swf"); と書いて, a.swf を loadMC に読み込むと, abcd という値が player_name という変数名のテキストフィールドにちゃんと入ります。 読み込むSWFを a.swf より大きくしておいて 角の方に player_name という変数名のテキストフィールドを置くか, loadMC というインスタンス名のムービークリップより上のレイヤーに player_name という変数名のテキストフィールドを置くと, そのテキストフィールドが見えますよね。 ~うまく行かない例~ 上記うまく行く例の a.swf にある テキストフィールド chara の内容を abcd から efgh に書きかえると当然, _root の player_name という変数名のテキストフィールドは変更されず, abcd のままです。 当たり前ですよね。 _root.player_name = chara; は a.swf を読み込んだときにしか実行されませんから。 その場合, a.swf に on (release) { _root.player_name = chara; } と書いたボタンを用意しておいて, abcd から efgh に書きかえたあとにこのボタンをクリックすれば, _root の player_name も変更されます。 または, 読み込むSWF側に on (release) { player_name = _root.loadMC.chara; } と書いたボタンを用意しておいて, abcd から efgh に書きかえたあとにこのボタンをクリックすれば, _root の player_name も変更されます。 単にそれだけのことですよ。 ============================================= ただ,今まで作られていたゲームのSWFに _root というパスが使われていた場合, そのゲームをちがうSWFに読み込むと, そのゲームに書いてある _root は読み込むSWFの _root になってしまうので,その辺の変更の方が大変かもしれません。 もし大変であれば, _lockroot=true; を使って, _root をロックする方法も考えられます。 「Macromedia Flash Player 7 リリースノート」 http://www.macromedia.com/support/documentation/jp/flashplayer/7/releasenotes.html 「ファイルの読み込みについて」(loadMobie全般に関しても参考になるかも) http://hakuhin.hp.infoseek.co.jp/main/as/import.html 具体的には,読み込むムービーのフレームに _root.loadMC._lockroot=true; _root.loadMC.loadMovie("a.swf"); と書くと言うことです。 これで,a.swf (ゲームの前編) に _root が使われていたとしても, その _root は a.swf の _root を指したままになるので, _root が変わることはありません。 しかし! これを使った場合, _root.player_name = chara; も効かなくなるので,ここを _parent.player_name = chara; などという相対パスを使って変数を送ることになります。 ごちゃごちゃいらないことを書きましたが, 結局,ロードされるものはロードされるものとして最初から考えて作らないと,結構ややこしいことになるということです。

milk385
質問者

お礼

sassakunさんが記述して下さったスクリプトをコピペしながら、何とか私の考えていた通りにできました(*^∀^*) _rootの直しがちょこっと大変でしたが(笑) 長文での丁寧なご説明、本当にありがとうございます!!

関連するQ&A

  • SharedObjectの使い方(長文です)

    制作しているゲームに、セーブ機能を付けようと 下記サイトの、テキストセーブflaや 他のサイトを参考にしましたがうまく作動しません http://mamnag.org/prmx/flash/sharedobject.html 長文で申し訳ないです どなたか分かる方教えてください(_) 環境は、FLASH CS3 アクションスプリクト2.0です ■ゲームのオープニング画面に『スタート』と『ロード』ボタン、 ゲーム内に『セーブ』ボタンを置いて、下記のASを書きました ◆スタートボタン(インスタンス名は、startbtm) on(release){ var so = SharedObject.getLocal("my_data"); if(so){ so.clear(); } nextScene();} //次のシーン(ゲーム内容へ飛ぶ) ◆ロードボタン(インスタンス名は、lordbtm) on(release){ SharedObjLoad(); } ◆セーブボタン(インスタンス名は、savebtm) on(release){ _root.saveData(); } ■フレームアクションスプリクト(1) --------------------------------------------------------- //SharedObjectインスタンスの生成 SO_instance = SharedObject.getLocal("mydata"); //保存用サンプルデータを作成 var arrayData = new Array("aaa","bbb","ccc","ddd","eee"); var stringData= "日本語文字列";//この日本語もUTF8で保存されます。 //データを保存(変数を代入していますが、直接リテラルを入力することも可能です) SO_instance.data.savebtm = arrayData; SO_instance.data.savebtm = stringData; //保存したデータの呼び出し。(出力ウインドウで確認してください) trace("SO_instance.data.savebtm : "+SO_instance.data.savebtm); trace("SO_instance.data.lordbtm : "+SO_instance.data.lordbtm); --------------------------------------------------------- ■フレームアクションスプリクト(2) --------------------------------------------------------- //SharedObjectインスタンスの生成 mySharedObject = SharedObject.getLocal("●●.swf"); //ホストのルートに保存する場合:mySharedObject = SharedObject.getLocal("●●.swf"); //保存したデータの呼び出し _root.lord = mySharedObject.data.lordbtmD; //saveボタンが押されたときにテキストフィールドの変数を保存 function saveData(){ mySharedObject.data.savebtmD = _root.savebtm; } --------------------------------------------------------- サンプルflaに、フレームASが二つあったので そのまま使いましたが、これでいいのでしょうか?? 出力には SO_instance.data.savebtm : 日本語文字列 SO_instance.data.lordbtm : aaa,bbb,ccc,ddd,eee という文字がでました

  • SharedObjectが効かない

    FLASHで、一定時間内にアクセスするとオープニングを飛ばすスクリプ トを書いています。Javascriptのクッキーと同じスクリプトの「SharedObject」を使用しています。 www.hfm-kenchan.com/Lesson/log_qa/D0512073.htm こちらのサイトの解説とサンプルを使用させてもらい、作ってみました が、ページを更新しても1フレーム目からのアニメーションが始まって しまい、スクリプトが効いてません。 現在作っているファイルのアニメーションが25fps、171フレームまであるのが原因だと思いますが。 変数に入っている数字などを変えてみましたが、効きません。 同じサンプルでもレイヤー数がスクリプト用のレイヤーと合わせても3 レイヤー、フレーム数11フレームで作ると効きます。 スクリプトのレイヤーにさらに別のスクリプトを書き加えてやる必要があるのかと思いますが、スクリプト素人である為判りません。 どなたか判る方いらっしゃるでしょうか。お教え下さい。 1フレーム目に入るスクリプトを書いておきます。 span = 15; nowDate = new Date(); nowAC = nowDate.getTime(); cookie = SharedObject.getLocal("accessTime"); if (cookie.data.beforeAC != undefined) { Time = Math.floor((nowAC-cookie.data.beforeAC)/1000); cookie.data.beforeAC = nowAC; if (Time < span) { this.gotoAndStop("menu"); } } else { cookie.data.beforeAC = nowAC; } 使用ソフトはFLASH8、環境はWDXPです。どなたかお助け下さい。

  • SharedObjectのディレクトリ(フォルダ)名について。

    こんにちは、はじめて質問をさせていただきます。 今、FlashのSharedObjectをサンプルで作成しています。 作成自体はうまくいき、サーバーにアップしました。 一つ質問なのですが、SharedObjectが保存されるディレクトリ(フォルダ)の名前はFlashでSharedObjectを作成する際に指定することはできないのでしょうか? 今、私はロリポップサーバーにアップしているので、保存されているフォルダの名前が「sunnyday.jp」という名前になっています。 このフォルダ名を変更する方法が分かる方がいらっしゃいましたら教えてください。お願いいたします。 http://kouchanvv.sunnyday.jp/sharedobject/sharedobject_vercs3.swf サーバーに上げたデータはこれです。 テキストフォームに入力し、SAVEを押すとSharedObject(.sol)が作成されるようになっています。

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

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

    • ベストアンサー
    • Flash
  • PSP の セーブデータのことで これって聞いちゃダメ?

    エーと とあるサイトから PSPのセーブデータ をダウンロードして 移そうと思ったのですが そのゲームの データ できる数は3つあるんですけど 1つ空いているので どうすればそこに うつすことができますか? ちなみに セーブデータのファイルに 移そうとすると 上書きしますかと でるので たぶんデータが 消えてしまうと思います ちなみにゲームは  モンスターハンターの2です

  • ワードの印刷でこんなのどうするの?

    ワードの1ファイルに4枚のデーターがあります。ver2000 それどれ、上から順番に1、2、1、2のようにページ番号が付されています。 質問1 後編の1、2、のみを印刷したいのですがページの指定で1-2としてすると4枚が排出されます。 後編の1、2、を印刷するにはどのようにしてすればいいのですか? 質問2 前編の1、2、のページ番号を消すにはどうすればいいのでしょうか? 詳しい方宜しくお願いします。

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

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

    • ベストアンサー
    • Flash
  • プレステ等のデータの保存方式

    ゲーム機器のデータの保存方法って、公開されている のでしょうか? 有料なんでしょうか?無料で申告方式なんでしょうか? たとえば、ゲームを作成して、データをセーブします よね?その時開発メーカーは、どうやってセーブする 方式を決めるのでしょうか? 私は、PerlとPHPしか分かりませんが、ファイルの 書き込み方法は統一されてますよね。 ゲーム機器では、その統一された情報はどこから、 入手するのでしょうか? その方法さえ分かれば、自作のDVDでも書き込める物 なんでしょうか?

  • PSPのデータの入れ方について

    PSPをUSBケーブルでPCに繋ぎ、友人から送って貰った セーブデータやPCにバックアップさせておいた自分のセーブデータを PSPファイルの中のセーブデータファイルに移すと【破損データ】 になってしまいます。 ファイルはシステムファイルとSFOファイルの二つです。 このファイル自体は破損してはいないはずなんですが原因わかりますか? ちなみに今現在プレイしてるゲームのセーブデータを一旦PC上に送り またすぐにファイルの中に戻しても【破損データ】となって しまいます。データ転送の方法間違ってるんでしょうか?

  • FLASH(プロジェクタEXE)でのデータ保存

    突然ですが、 FLASHでローカルにデータを保存する良い方法は ありますか? ネットでCGI/ASP/PHPなどを経由(データ送信)したり ブラウザのクッキーを利用する方法は思いつくのですが 今回は、SWFではなくWindowsプロジェクタのEXEの状態で データ保存したいです。 Exchange!?(Extension!?)などを利用しても良いので、 良い方法をご存知の方がいらっしゃれば ご教授お願いいたします。 あと、XMLでメモリ上でノードを追加したり できるようですが、あれって、 *.xmlを更新保存する事ってできるのでしょうか? 重ねて、教えていただけると有難いです。 目的は、自作ゲームのセーブデータを保管するためです。 質問ばかりですが、どなたかお返事をお待ちしております。 よろしくお願いいたします。

    • ベストアンサー
    • Flash