SharedObjectで携帯電話にデータを保存する
端末にデータを保存するSharedObject、PCでは動いても携帯電話では動かなかったりする。ただ書き方を変えると動く。ぼくの携帯はauのW62S。待ち受け画面が起動された回数を表示するプログラム。
動かない例。毎回1になる。
class Main { public static var WIDTH:Number = 240; public static var HEIGHT:Number = 432; public static function main(swfRoot:MovieClip):Void { swfRoot.stop(); var so:SharedObject = SharedObject.getLocal("mh_AS208", "/"); var count:Number = so.data.count; if (count == undefined) { count = 1; } so.data.count = count + 1; so.flush(); swfRoot.createTextField("tf", 0, Main.WIDTH/2, Main.HEIGHT/2, 50, 50); var tf:TextField = swfRoot.tf; tf.textColor = 0xffffff; tf.text = ""+count; } }
onEnterFrameの中に書くと動く。
class Main { public static var WIDTH:Number = 240; public static var HEIGHT:Number = 432; public static function main(swfRoot:MovieClip):Void { swfRoot.stop(); var so:SharedObject = SharedObject.getLocal("mh_AS208", "/"); var i:Number = 0; swfRoot.onEnterFrame = function() { i++; if (i == 1) { var count:Number = so.data.count; if (count == undefined) { count = 1; } so.data.count = count + 1; so.flush(); swfRoot.createTextField("tf", 0, Main.WIDTH/2, Main.HEIGHT/2, 50, 50); var tf:TextField = swfRoot.tf; tf.textColor = 0xffffff; tf.text = ""+count; } } } }
ごさんこう
http://www.1art.jp/flash/le/lesson41/lesson41.htm
http://www.bird-soft.net/mt/2008/12/flash_lite_20_flashfscommand2s.html
if (i == 1)
の部分は機種によっては
if (i == 5)
くらいにした方がいい場合もある。自分の携帯はそうだった。数値が増えない場合があるけど、ちょっと待機すると増えてくれる。しかし、友人の携帯ではメール画面やネットから戻った場合には増えるが、携帯をパカパカして待ち受けの起動/停止を繰り返しても増えない場合があったりとよくわからない。