疑問:
ゲームのスコアーやプレイ回数などを保存したい。どうすれば良いか?
解答:
SharedObjectクラスを使えば、簡単に値を保存する事ができます。
オブジェクトの作成
var mySharedObject:SharedObject = SharedObject.getLocal(“myParameters”);
ローカルに”myParameters.sol”というSharedObjectファイルが作成されます。
値の保存
mySharedObject.data.myAttr = 12345;
データ名”myAttr”で値”12345″が保存されます。
値の呼び出し
var _myAttr = mySharedObject.data.myAttr;
データ名”myAttr”の値が返されます。
値の即時保存
mySharedObject.flush();
SharedObjectファイルに即座に書き込みます。
値の保存が頻繁でなく小さなサイズの場合は、保存後にflash()を呼んでおいた方が良いのかも。
オブジェクトの削除
mySharedObject.clear();
ローカルからSharedObjectファイルが削除されます。
サンプル:
コード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 |
package { import flash.display.MovieClip; import flash.events.MouseEvent; import flash.utils.Timer; import flash.events.TimerEvent; import flash.net.SharedObject; public class SOTest01 extends MovieClip { private var _so:SharedObject; private var _count:Number = 0; private var _timer:Timer; private var _downInc:Boolean = false; private var _downDec:Boolean = false; public function SOTest01() { initializeSharedObject(); UpdateCounter(); btnInc.addEventListener(MouseEvent.MOUSE_DOWN, onDownInc); btnInc.addEventListener(MouseEvent.MOUSE_UP, onUpInc); btnInc.addEventListener(MouseEvent.MOUSE_OUT, onUpInc); btnDec.addEventListener(MouseEvent.MOUSE_DOWN, onDownDec); btnDec.addEventListener(MouseEvent.MOUSE_UP, onUpDec); btnDec.addEventListener(MouseEvent.MOUSE_OUT, onUpDec); btnReset.addEventListener(MouseEvent.CLICK, onClickReset); btnStore.addEventListener(MouseEvent.CLICK, onClickStore); btnRecall.addEventListener(MouseEvent.CLICK, onClickRecall); btnDelete.addEventListener(MouseEvent.CLICK, onClickDelete); _timer = new Timer(33); _timer.addEventListener(TimerEvent.TIMER, onTimer); _timer.start(); } private function onTimer(e:TimerEvent):void { if (_downInc) { _count++; if (_count > 999) { _count = 999; } UpdateCounter(); } if (_downDec) { _count--; if (_count < 0) { _count = 0; } UpdateCounter(); } } private function initializeSharedObject():void { _so = SharedObject.getLocal("AppStatus"); if (!_so.data.counter) { _so.data.counter = 0; } } private function setSharedObject(n):void { _so.data.counter = n; } private function getSharedObject():Number { return _so.data.counter; } private function clearSharedObject():void { _so.clear(); } private function onClickStore(e:MouseEvent):void { setSharedObject(_count); } private function onClickRecall(e:MouseEvent):void { _count = getSharedObject(); UpdateCounter(); } private function onClickDelete(e:MouseEvent):void { clearSharedObject(); initializeSharedObject(); } private function onDownInc(e:MouseEvent):void { _downInc = true; } private function onUpInc(e:MouseEvent):void { _downInc = false; } private function onDownDec(e:MouseEvent):void { _downDec = true; } private function onUpDec(e:MouseEvent):void { _downDec = false; } private function onClickReset(e:MouseEvent):void { _count = 0; UpdateCounter(); } private function UpdateCounter():void { txtCount.text = String(1000 + _count).substr(1, 3); } } } |
実行結果
This movie requires Flash Player 11
コメントを残す
コメントを投稿するにはログインしてください。