• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ローカル共有オブジェクトの使い方)

ローカル共有オブジェクトの使い方

このQ&Aのポイント
  • ActionScript2.0でウェブを開発中です。ローカル共有オブジェクトを使い、保存したファイルを別のファイルで読み込もうとしていますが、上手くいきません。
  • a.swfで生成したローカル共有オブジェクトは読み込めるのですが、b.swfでは読み込むことができません。仕様に問題があるのでしょうか?
  • ローカル共有オブジェクトを使ったウェブ開発中に、ファイルの保存と読み込みの問題が発生しています。b.swfでローカル共有オブジェクトを取得する際にエラーが発生しています。

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

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

> my_so = SharedObject.getLocal("so1") "so1" 1つでは共有できません。 solファイル のローカルファイルパスが抜けています。 「FN0204003 - SharedObject.getLocal() - Flash テクニカルノート」 http://www.fumiononaka.com/TechNotes/Flash/FN0204003.html パスに関しては上記ページに書いてありますが, ごちゃごちゃ考えるのが面倒な場合は, サイトのrootディレクトリに対応するローカルディレクトリに sol ファイルを保存するようにすれば簡単です。 と言っても難しく考えずに, "/" を第2引数に加えれば良いだけですが。 (その場合,なるべくユニークな(他とかぶらないような)名前の方が良いです。) ◎簡易スクリプト例 ---「a.fla(a.swf)」------------------------- my_so = SharedObject.getLocal("so1", "/"); my_so.data.date = "今10時です"; my_so.flush(); ---------------------------------------- ---「b.fla(b.swf)」------------------------- my_so = SharedObject.getLocal("so1", "/"); trace("my_so.data.date="+my_so.data.date); ---------------------------------------- 「a.swf」を開いた後に「b.swf」をムービープレビューすると結果が出力されます。 ======================= 上でも少し書きましたが, ローカルPCの solファイル 格納専用場所のサイトやローカルフォルダのSWFに応じたフォルダに solファイル ができます。 私の場合(Windowsの場合)は次のような場所です。 C:\Documents and Settings\ユーザ名\Application Data\Macromedia\Flash Player\#SharedObjects\○○\××\~~ パスを書かない場合はその場所の「a.swf」対応フォルダの中に solファイル ができます。 そこはファイルごとの格納場所ですから共有できません。 パスを書くと「a.swf」対応フォルダより上のフォルダに solファイル を保存することができます。 そこが「a.swf」と「b.swf」の両者の親元であれば,共有できるということになります。 Webサイト上の SWF を閲覧する場合は,ドメイン名ごとにフォルダができます。 (例:Adobe サイト だと「adobe.com」フォルダ ができる) そのドメイン名フォルダよりも上の階層に solファイル を保存することはできません。 my_so = SharedObject.getLocal("so1", "/"); と書いた場合は,ドメイン名フォルダの直下に 「so1.sol」 ファイルができます。 そのドメイン名フォルダの直下を利用するとごちゃごちゃ考えずに簡単にできますということを上に書いたわけです。 ただし,別用途の sol を同じフォルダに置いた場合, 名前を同にすると競合問題が発生するので,ユニーク(他とかぶらないような)な名前が良いです。  

youzan1231
質問者

お礼

ありがとうございます。 よくわかりました。 本当に助かりました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Flash Communication Serverから共有オブジェクトへのアクセス

    Flash Communication Server MXを使っています。 main.ascから共有オブジェクトを通じてクライアント側のswfで音を鳴らしたり、テキストを表示したいのですが、 上手くいかず行き詰まっています。 main.ascのスクリプトは、  so = SharedObject.get("test");  so.send("sayHello"); としてsendを使い共有オブジェクトメッセージを送ろうとしています。 swfファイルのActionScriptは共有オブジェクトのfunction内に以下のように記述しています。  so.sayHello = function(){  trace("こんにちは");  } 上記のようなスクリプトで全然反応しないのですが、どこが間違っているのでしょうか? マニュアルや解説書、検索エンジンで探したのですが分かりません。 よろしかったらどなたか教えていただけないでしょうか?

    • ベストアンサー
    • Flash
  • SharedObject.getLocal()、オブジェクト名.data.変数の「変数」の部分に変数を入れる方法について

    SharedObject.getLocal()、オブジェクト名.data.変数の「変数」の部分に変数を入れる方法について ActionScript初心者なので頓珍漢な事を書いているかもしれませんが、 よろしくお願いします。 オブジェクト名.data.変数の変数の部分に変数を入れたく、 AS2.0で //////////////////////////////////////////////// my_hozon = SharedObject.getLocal("test", "/"); count = 0; for (count=0; count<=3; count++) { abc = "test_"+count; trace(abc); my_hozon.data.abc= "a"; trace(my_hozon.data.abc);//結果"a" trace(my_hozon.data.test_0);//結果"undefined" trace(my_hozon.data.test_1);//結果"undefined" trace(my_hozon.data.test_2);//結果"undefined" trace(my_hozon.data.test_3);//結果"undefined" } //////////////////////////////////////////////// と書いてみたのですが、 trace(my_hozon.data.abc); は結果が返ってきたのですが、 trace(my_hozon.data.test_0); trace(my_hozon.data.test_1); trace(my_hozon.data.test_2); trace(my_hozon.data.test_3); だとundefinedになり失敗しました。 どうすれば変数に変数が入るのか教えていただけないでしょうか。 よろしくお願いします。

  • [ActionScript3.0]ローカルのデータをサーバに同期させる方法

    ローカルで作った値を、オンラインにつないだ時にサーバに同期させるものを作りたいと考えています。 環境は以下のような環境で製作しています。 Flash CS4 ActionScript3.0使用 OS:Windows XP SharedObjectを用いて、ローカルに保存されたSWFで値を保存し、サーバーにあるSWFでローカルで作られたSharedObjectを参照してそれを使うことができないかと考えました。 getLocal( "my_data", "/" ); と指定して実際にためしてみると、ローカルのものと、サーバーでつくられるSharedObjectを別のものになり、同期させることはできませんでした。 他に方法はないかしらべると、getRemote関数なるものがあり、それを用いたものならばできないかと考えやってみましたが、RTMPサーバーを構築していない為、コンパイル時にコネクトできないとエラーを吐かれ使うことができませんでした。 そこでお聞きしたいことは、Flashを用いてローカルに保存されたデータをサーバーでも読み込むことができるのでしょうか? また、もしできるようならばどのような方法を用いればよろしいでしょうか? 宜しくお願いします。

    • ベストアンサー
    • Flash
  • SharedObjectについてです

    1つのwebページに2つflashをはめ込んでいるのですが、その両方に同じSharedObjectを読み込ませたいと考えています。 my_so = SharedObject.getLocal("local","/"); しかし、1つ目のflashは読み込んでも、2つ目のflashが、"undefined"になってしまいます。 なぜでしょうか?何か良い方法がありましたら、ご指導御願いします。

    • ベストアンサー
    • Flash
  • 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 という文字がでました

  • 変数名に変数を使う

    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
  • SharedObjectの動作がうまくいかない。

    一度設定したボタンの状態をSharedObjectで保存して、次にアクセスした時に反映されるようにしたのですが、うまく動作しません。スクリプトは下記の通りです。 //ここに現在のロード時の状態を呼び出す onClipEvent (load) { //シェアードオブジェクトの呼び出し mySO = SharedObject.getLocal("topmusic","/"); _root.music = mySO.data.state; //初アクセス時の補正 if (mySO.data.state == null){ mySO = SharedObject.getLocal("topmusic"); mySO.data.state = 1; mySO.flush(); _root.music = 1 } } //クリックされた時にオン・オフを切り替える on (release) { _root.music = _root.music*(-1); //フラグ反転 } //クリックされた結果をローカルに保存する。 mySO = SharedObject.getLocal("topmusic"); mySO.data.state = _root.music; mySO.flush(); } ===================== 以上はメインタイムライン上に配置されたムービークリップ(button)に記述したスクリプトです。 ローカルには新しくファイルが作成されているので、何がしかの処理はされているようです。 もしかして、ローカル保存した

    • ベストアンサー
    • Flash
  • 2回目以降の訪問でFlashをSkipさせる方法について

    表題の方法について、以前の質問や他サイトを参考にSharedObjectというものを 使用するという事は分かったのですが、以下の方法をとったところ、初めての訪問でも Movieが再生されず、最終フレームで止まったままとなってしまいます。 どこが間違っているのか皆目検討が尽きません。 今のFlaファイルは ■先頭フレーム:ラベル名「startMovie」 ■2フレーム目 フレームActionとして var my_so = SharedObject.getLocal("MyCookie"); if (my_so.data.haveVisited != 1) { my_so.data.haveVisited = 1; my_so.flush(); this.gotoAndPlay("startMovie"); } else { this.gotoAndStop("endMovie"); } ■最終フレーム:ラベル名「endMovie」 ボタンのオブジェクトActionとして on (release) { this.gotoAndPlay("startMovie"); } フレームActionとして this.stop(); となっています。 どうしたら初めての訪問でMovieが再生され、2度目の場合は 最終フレームでSTOP、REPLAYボタンで再生、という風にできるでしょうか。 どうかアドバイスの程宜しくお願い致します。

  • Listオブジェクトを連結し、新しいListオブジェクト生成

    2つのListオブジェクトを連結して、 新たに1つのListオブジェクトを生成するのは、 どうすればいいのでしょうか? 1. ListオブジェクトA 2. ListオブジェクトB 3. ListオブジェクトC(1.と2,を連結して新規生成) ※1と2には全く変更を加えない。 また、この方法は、パフォーマンスが重くなるでしょうか?

    • ベストアンサー
    • Java
  • SharedObjectの保存先を指定について

    Flash MXでSharedObjectを利用して、データを保存しようと思います。 Windowプロジェクター(test.exe)をCドライブの直下のtestフォルダに保存し、testフォルダ内にaaa.solを生成させたいと思いますが、別のフォルダに保存されます。testフォルダ内に保存する方法はあるのでしょうか?それともアクションスクリプトが間違っているでしょうか?ご教授ください。よろしくお願いします。 on (release) { myLocalSO = sharedobject.getLocal("aaa","/test"); myLocalSO.data.name = box.text; myLocalSO.flush(); }

    • ベストアンサー
    • Flash