- ベストアンサー
AS3.0で外部ファイルにデータを書き出す方法
- Flash CS3でActionScript3.0を使って体重の記録アプリを作っています。テキストデータを読み込んで体重の推移を表示することや、現在の体重を外部ファイルに書き出して保存することなどを実装したいです。しかし、外部ファイルへの書き出し方法がわからず詰まっています。Shared Objectを使う方法や直接テキストを読み書きする方法があるかどうか知りたいと思っています。
- 体重の記録アプリを作成中のFlash CS3でActionScript3.0を使用しています。体重の推移を表示するためにテキストデータを読み込むことや、現在の体重を外部ファイルに書き出して保存することなどを実現したいです。しかし、外部ファイルへの書き出し方法がわからずに困っています。Shared Objectを使う方法や直接テキストを読み書きする方法を教えていただけると助かります。
- Flash CS3でActionScript3.0を使って体重の記録アプリを開発しています。テキストデータを読み込んで体重の推移を表示することや、現在の体重を外部ファイルに書き出して保存することなどを実装したいのですが、外部ファイルへの書き出し方法が分かりません。Shared Objectを使用する方法や、直接テキストを読み書きする方法などがあれば教えていただきたいです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
再び失礼します、No.1です. 私自身Flash Player 9以上対象の案件が多いので 不勉強ながら使った事が無かったのですが Flash Player 10以上対象ならFileReferenceの新しい機能が使えますね. http://blogs.adobe.com/akamijo/archives/2008/07/flash_player_10_5.html FileReference クラス自体は以前からありますが (Playerがローカルファイルのデータを直接操作することができなかったため サーバにファイルをアップロードする位のクラス) Flash Player 10からユーザ操作により ローカルのファイルを直接(←重要)開いたり 保存したりできるようになっています. 説明しておいて何ですが、SharedObjectはデータ保存としては 弱いと個人的に思うので、上記クラスの新APIを使う事により 前回の説明とは異なる設計ができそうです. ただ、CS3をお使いとの事なので Flash Player 10 に対応するコンパイラとエディタ (フリーでFlex SDK +FlashDevelop等)を 使うか、Flash CS4が必要になります. No.2のかたが仰る通り AIRアプリケーションにするのも良いと思います. (その場合ユーザ側にAIRランタイムをインストールさせる必要があります.)
その他の回答 (2)
- H240S18B73
- ベストアンサー率65% (190/288)
airアプリってことなら…
お礼
ご回答ありがとうございます。 AIRですか。恥ずかしながら、初耳でした。 導入さえしてしまえば、これはとても便利そうですね。 勉強させていただいてから、前向きに導入を検討したいと思います。 多くの方にご意見を伺ってよかったです。
- screenstar
- ベストアンサー率100% (14/14)
swfファイルのみで直接テキストファイル(メモ帳等で開ける.txtファイル)を 書き出し・保存することはできません. 配布されるということは、ローカルのFlashPlayerで動作させる、または exeファイルにするのでしょうか.一応その前提で回答していますので 的確な回答ではないかもしれません、参考までにご覧ください. SharedObjectを使う方法について SharedObjectは以下のような性質があります. ・ユーザーが意図してローカル記憶領域を0にした場合保存できない ・決められたサイズ以上は保存できない ・保存場所はある程度までしか選べない (一応引数でディレクトリを指定できますが、それはデフォルトの保存先より下に 限定されます)→一つ目のご質問、たとえばデスクトップにあるフォルダ××を 選び、そこに保存するのは無理ということです. SharedObjectを使う場合の 設計の一例をあげておきます. ・入力用テキストフィールド ・入力確定用ボタン ・体重の推移を表示するオブジェクト を用意 ↓ ---------------------------------- 入力確定用ボタンが押されたタイミングで ・SharedObjectを参照(無い場合は作成される) ・記録したいプロパティを持ったObject(例えば{ date:(ボタンが押された日時),weight:(入力された体重) })を作成し、SharedObject.dataにプロパティを持たせて代入し書き込む ---------------------------------- ・SharedObjectを参照(無い場合は作成される) ・SharedObject.dataを走査し、プロパティの値を取り出す ↓ 日時順に並べ替え、体重の推移を描画 注意点は、 ・常に同じSharedObjectを参照するため、SharedObject.getLocal("weightLog")などと 一意の名前を決めておく ・SharedObject.dataに設定するプロパティ名が毎回同じだと上書きされて しまうので、常に異なるプロパティ名を設定する (入力確定用ボタンが押された日時をプロパティ名にする等) 設計を詰めていく段階でほかにも色々注意点は出てきますが省きます. 上記の方法で一応1、2を満たすものはできます.3、は >体重を保存したファイルをswfファイルとセットにして 配布 するのではなく、swfファイルを配布し、これを起動して 体重入力を行うとローカルのsolファイルに体重が保存される、と いうことになりますが….
お礼
大変詳しくご回答いただき、ありがとうございます。 やはりFlash単体でファイル操作はできないのですね。 また、SharedObjectには容量の制限をはじめ、数々の制約があるのですね… あまり大量のデータを扱えないとなると、 後々動かなくなる危険性があるということですから、少し心配です。 ですが、まずはお教えいただいた方法で一度作ってみて、 それから問題点が出てくれば、それが解決できなかったときに また質問させていただければと思います。 もうしばらくこのまま締め切らずに置かせていただきますが、 ご回答に不満があるわけではございませんので、悪しからずご容赦下さい。
お礼
重ねてのご回答,ありがとうございます。 FileReferenceクラスに,そんな昨日が追加されたとは驚きです! 早速リンク先を拝見して,使えそうだと直感いたしました。特に,開くと同時にユーザーが読み込みファイルの指定をできるようにしたいと考えていたので,一石二鳥です。 ゆくゆくはAIRに移行するとして,まずは練習ですのでこちらの方法でトライしてみたいと思います。また,この機能が欲しいので,がんばってCS4かCS5を導入します。 今回は,まさに「待てば海路の日和あり」でした。ありがとうございました。