<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>memo.393 &#187; SharedObject</title>
	<atom:link href="http://memo.393.bz/archives/tag/sharedobject/feed" rel="self" type="application/rss+xml" />
	<link>http://memo.393.bz</link>
	<description>個人的メモです。間違いなどありましたらご指摘ください。。。</description>
	<lastBuildDate>Sun, 27 Nov 2011 15:27:41 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>[AS]SharedObjectについて</title>
		<link>http://memo.393.bz/archives/384</link>
		<comments>http://memo.393.bz/archives/384#comments</comments>
		<pubDate>Tue, 10 Mar 2009 04:41:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[SharedObject]]></category>

		<guid isPermaLink="false">http://memo.393.bz/?p=384</guid>
		<description><![CDATA[ユーザーのPCに変数情報等を保存できる。 Flash版のCokkieみたいなものらしい。 (そもそもCookieをよくわかっていないが) 何ができるかといったら、swfファイル間で同じ変数情報を共有可能。 使い方、own [...]]]></description>
			<content:encoded><![CDATA[<p>ユーザーのPCに変数情報等を保存できる。<br />
Flash版のCokkieみたいなものらしい。<br />
(そもそもCookieをよくわかっていないが)</p>
<p>何ができるかといったら、swfファイル間で同じ変数情報を共有可能。</p>
<p>使い方、owner.flaをつくりのそのフレームアクションに、</p>
<pre name="code" class="as">

// 共有オブジェクトを作成する
var so:SharedObject =SharedObject.getLocal(&quot;MyData&quot;,&quot;/&quot;);
//containerBox0という箱を定義して値を設定
so.data.containerBox0=&quot;test0&quot;;
//ローカルにファイル(MyData.sol)を保存する。
var str = so.flush();
</pre>
<p>つづいて、user.flaを作ってそのフレームアクションに、</p>
<pre name="code" class="as">

var so:SharedObject=null;
so=SharedObject.getLocal(&quot;MyData&quot;,&quot;/&quot;);
var tf:TextField = new TextField();
addChild(tf);
tf.text=String(so.data.containerBox0);
</pre>
<p>owner.flaをパブリッシュすると、MyData.solが保存される。<br />
保存場所は上記スクリプトの場合は、<br />
C:\Documents and Settings\(ユーザーID)\Application Data\Macromedia\Flash Player\#SharedObjects\NFWUQ76F\(ドメイン名)<br />
もしくは<br />
C:\Documents and Settings\(ユーザーID)\Application Data\Macromedia\Flash Player\(ドメイン名)<br />
といった感じになるようだ。<br />
<a href="http://www.flash-jp.com/modules/newbb/viewtopic.php?topic_id=3271&#038;forum=11&#038;post_id=18369">参照サイト</a><br />
ちなみにサーバーにあげないでローカルで試してるときは、(ドメイン名)はlocalhostになる。<br />
ファイルができたことを確認して、user.flaをパブリッシュすると、text0が表示される。</p>
<p>ここで少し注意が必要でした。</p>
<p>owner→userの順でパブリッシュすると期待通りの動きですが、<br />
user→owner→userの順でパブリッシュすると、MyData.solが削除されてしまいます。<br />
理由はちゃんと理解してませんが。。。<br />
多分先に作ったSharedObjectインスタンスに情報が入ってないから、なんちゃらかんちゃらな感じ。<br />
なので情報が入ってるか入ってないかを判定して、入ってなかったら、その場でSharedObjectインスタンスを破棄するような処理が必要。</p>
<p>というわけでuser.flaを以下のように変更するとOKでした。</p>
<pre name="code" class="as">

var so:SharedObject=null;
so=SharedObject.getLocal(&quot;MyData&quot;,&quot;/&quot;);
if (so.data.containerBox0==null) {
	so.clear();
	so=null;
} else {
	var tf:TextField = new TextField();
	addChild(tf);
	tf.text=String(so.data.containerBox0);
}
</pre>
<p>ファイル保存の際はエラー処理書いておかないとまずいですね。。。</p>
]]></content:encoded>
			<wfw:commentRss>http://memo.393.bz/archives/384/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

