★AS3★ テキストフィールドに打った文字をPCのローカルに保存する方法
SharedObject を使う。
最初に表示しておく文字を設定して、あとはswfを開いてtextfieldに文字を打ったら、その都度書いた文字が保存されてるというコード。
①まずはライブラリ?とかの方から、直にtextfieldをステージに置いて、インスタンス名を何でもいいからつける。textfieldの設定は、「TFLテキスト」で「編集可能」にしておく。縦書き・横書き・文字数・色とかは設定したい通りに。
②コードを書く。
//importはなぜか打たなくても動いたのでとりあえず省略。
//初期に表示しておく文字
var firstmoji:String ="ー記入例ー”;
//SharedObject「so」を作成しローカル共有オブジェクトの参照を得る
var so:SharedObject = SharedObject.getLocal("user_data”);//※1
//テキストフィールドへの表示
page_tab1.dai.textfield.text = firstmoji;//※2 A:初回orデータリセットした場合
if (so.data.kinyu_data != undefined) {//※2 B:2回目以降
page_tab1.dai.textfield.text = so.data.kinyu_data;//「textfield」に「so」データを表示
}
//テキスト入力に変化があれば関数 saveData を実行
page_tab1.dai.textfield.addEventListener(Event.CHANGE,saveData);
//関数 saveData の定義(保存)
function saveData(evt:Event) {
//「so」の “kinyuu_data" に入力値を保存
so.data.kinyuu_data = evt.currentTarget.text;
so.flush();//即時保存(swf閉じる時の自動保存ではなくて手動保存できる)
//trace(so.data.kinyuu_data);//※3
}
//関数 resetFnc の定義(リセット)
page_tab1.btn.addEventListener(MouseEvent.CLICK,resetFnc);//※4
function resetFnc(evt:MouseEvent):void{
so.clear();//「so」に保存されてるデータを削除
page_tab1.dai.textfield.text = firstmoji;//初回表示の文字を入れなおしておく
}
※1
・”user_data”は好きな名前をつけてOK。
・PCの中に”user_data"のデータがあればそれを参照するし、なければ自動で作られる。
※2
・A:初回→「page_tab1.dai.textfield」はインスタンス名。(3つのmcの入れ子構造)。textfieldは最初にインスタンス名をつけたやつ。
・B:2回目以降→もし「so」のデータに保存した “kinyu_data" が存在すればBを実行する。”kinyu_data”(記入データ)の名前は何でもOK。
※3
・トレースするとどういう入力タイミングで保存されてるかが見える。
※4
・「page_tab1.btn」はインスタンス名(2つのmcの入れ子構造)。リセットボタンのmc(インスタンス名:btn)を作って配置しておく。
















