SharedObjectで携帯電話にデータを保存する

 端末にデータを保存するSharedObject、PCでは動いても携帯電話では動かなかったりする。ただ書き方を変えると動く。ぼくの携帯はauW62S。待ち受け画面が起動された回数を表示するプログラム。

動かない例。毎回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)

くらいにした方がいい場合もある。自分の携帯はそうだった。数値が増えない場合があるけど、ちょっと待機すると増えてくれる。しかし、友人の携帯ではメール画面やネットから戻った場合には増えるが、携帯をパカパカして待ち受けの起動/停止を繰り返しても増えない場合があったりとよくわからない。