<?xml version="1.0" encoding="utf-8" ?><rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" 
			xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" 
			xmlns:cc="http://web.resource.org/cc/" xml:lang="ja">
<channel rdf:about="http://v12engine.blog116.fc2.com/?xml">
<title>新しい扉</title>
<link>http://v12engine.blog116.fc2.com/</link>
<description>新しいことをいろいろやってみるテストベッド的ブログ。</description>
<dc:language>ja</dc:language>
<items>
<rdf:Seq>
<rdf:li rdf:resource="http://v12engine.blog116.fc2.com/blog-entry-16.html" />
<rdf:li rdf:resource="http://v12engine.blog116.fc2.com/blog-entry-15.html" />
<rdf:li rdf:resource="http://v12engine.blog116.fc2.com/blog-entry-14.html" />
<rdf:li rdf:resource="http://v12engine.blog116.fc2.com/blog-entry-12.html" />
<rdf:li rdf:resource="http://v12engine.blog116.fc2.com/blog-entry-11.html" />
</rdf:Seq>
</items>
</channel>
<item rdf:about="http://v12engine.blog116.fc2.com/blog-entry-16.html">
<link>http://v12engine.blog116.fc2.com/blog-entry-16.html</link>
<title>swfコンテンツを埋め込むテスト</title>
<description> swfobject.jsを使って、Flashコンテンツをblog内に埋め込むテスト。現状では、Flashを埋め込むにはswfobject.js(JavaScript)を使ってやるのが一般的なようだ。ここにflashコンテンツが埋め込まれているはずなんだが...swfobject.embedSWF(&quot;http://blog-imgs-32.fc2.com/v/1/2/v12engine/GoogleMapTest3.swf&quot;,&quot;flashcontent&quot;,&quot;500&quot;,&quot;400&quot;,&quot;9&quot;,&quot;#FF0000&quot;);こんな具合。
 </description>
<content:encoded>
<![CDATA[ swfobject.jsを使って、Flashコンテンツをblog内に埋め込むテスト。<br /><br />現状では、Flashを埋め込むにはswfobject.js(JavaScript)を使ってやるのが一般的なようだ。<br /><br /><div id="flashcontent">ここにflashコンテンツが埋め込まれているはずなんだが...</div><br /><br /><script type="text/javascript">swfobject.embedSWF("http://blog-imgs-32.fc2.com/v/1/2/v12engine/GoogleMapTest3.swf","flashcontent","500","400","9","#FF0000");</script><br /><br />こんな具合。 ]]>
</content:encoded>
<dc:subject>flex</dc:subject>
<dc:date>2008-11-24T15:18:52+09:00</dc:date>
<dc:creator>k</dc:creator>
<dc:publisher>FC2-BLOG</dc:publisher>
</item>
<item rdf:about="http://v12engine.blog116.fc2.com/blog-entry-15.html">
<link>http://v12engine.blog116.fc2.com/blog-entry-15.html</link>
<title>PlaceEngine ActionScript APIを非対応版PEクライアントで使う</title>
<description> 公開しているAPIを使ってくれている方がいらっしゃるようなので、久しぶりに追加コメントなどを。このサイトで公開しているPlaceEngine ActionScript APIは、ローカルにインストールするPEクライアントについて、いまのところはクウジットから未公開の「crossdomain対応版クライアント」を使用することが前提になっています。ですが、そうでない普通に公開されているPEクライアントであっても、Flash(Flex)コンテンツをデバッグ動
 </description>
<content:encoded>
<![CDATA[ 公開しているAPIを使ってくれている方がいらっしゃるようなので、久しぶりに追加コメントなどを。<br /><br />このサイトで公開しているPlaceEngine ActionScript APIは、ローカルにインストールするPEクライアントについて、いまのところはクウジットから未公開の「crossdomain対応版クライアント」を使用することが前提になっています。<br /><br />ですが、そうでない普通に公開されているPEクライアントであっても、Flash(Flex)コンテンツをデバッグ動作させるならうまく動くはずです。残念ながらwebサイトにuploadしてそれを読み込んで実行させる(いわゆる普通のflash動作)ではダメです。<br /><br />私のところでは、Flex Builder環境下でデバッグで実行すれば、動いています。<br /><br />ちなみに、Macでです。Windowsでも同様のはず(今は検証してませんが、APIを公開した時点では動くことを確認しました)。<br /><br /><br />まあ、それにどれだけ意味があるか、ってのはまた別の問題ですが...。<br /><br />いずれにせよ、クウジットにまた連絡とってみようかな...。 ]]>
</content:encoded>
<dc:subject>flex</dc:subject>
<dc:date>2008-10-16T08:26:16+09:00</dc:date>
<dc:creator>k</dc:creator>
<dc:publisher>FC2-BLOG</dc:publisher>
</item>
<item rdf:about="http://v12engine.blog116.fc2.com/blog-entry-14.html">
<link>http://v12engine.blog116.fc2.com/blog-entry-14.html</link>
<title>PlaceEngine ActionScript APIの使い方</title>
<description> 先に公開したPlaceEngine ActionScript APIの使い方コード。Google Maps API for FlashとPlaceEngine APIを使って、現在位置を取得してそのエリアの地図を表示します。PlaceEngineサイトのAPI (Sample2)とほぼ同じ内容です。動作例はこちら。正しく動かすにはPlaceEngineクライアントのFlash対応版(未公開)が必要です。以下、簡単にコードの解説などを。以下はごく基本的なところだけなので、細かい部分はソースコード全体や、ライ
 </description>
<content:encoded>
<![CDATA[ <a href="http://v12engine.blog116.fc2.com/blog-entry-12.html" target="_blank" title="先に公開">先に公開</a>したPlaceEngine ActionScript APIの使い方コード。<br /><br />Google Maps API for FlashとPlaceEngine APIを使って、現在位置を取得してそのエリアの地図を表示します。PlaceEngineサイトのAPI (<a href="http://www.placeengine.com/doc/tut" target="_blank" title="Sample2">Sample2</a>)とほぼ同じ内容です。<br /><br />動作例は<a href="http://blog-imgs-19.fc2.com/v/1/2/v12engine/GoogleMapTest.swf" target="_blank">こちら</a>。<br /><span style="font-size:x-small;">正しく動かすにはPlaceEngineクライアントのFlash対応版(未公開)が必要です。</span><br /><br />以下、簡単にコードの解説などを。以下はごく基本的なところだけなので、細かい部分はソースコード全体や、ライブラリ側のコードを参照してください。ActionScriptがわかる人なら難しくないはずです。<br /><br />まず、PlaceEngine APIを使うように宣言して、<br /><pre class="code"><span class="keyword">import</span> PlaceEngineAPI.PlaceEngineAPI;<br /></pre>コード内の適当なところで、PlaceEnginAPIの実体を定義します。<br /><pre class="code"><span class="rem">//PlaceEngineの実体を生成</span><br />pe = <span class="keyword">new</span> PlaceEngineAPI(statusLabel, appk, onFindClient, onGetLocation, onMessage, <span class="keyword">false</span>);<br /></pre>引数は順に、<br /><br />statusLabel→APIからのメッセージの表示先。<br />appk→アプリケーションキー。<br />onFindClient→pingClient()を呼んでPEクライアントが存在したときのコールバック先。<br />onGetLocation→getLocation()を呼んで位置が取得できたときのコールバック先。<br />onMessage→APIでメッセージ出力がある際のコールバック先。<br />false→デバッグフラグ、trueでデバッグモード、省略可能。<br /><br />この例はサンプルなので全部指定してますが、通常は使わないコールバック関数はnull指定でOK(省略は出来ない)。なので一般的にはこんな具合になろうかと。<br /><pre class="code">pe = <span class="keyword">new</span> PlaceEngineAPI(statusLabel, appk, <span class="keyword">null</span>, onGetLocation, <span class="keyword">null</span>);<br /></pre>で、使えるように準備したところで、ボタンが押されるなど適当なトリガーで位置取得を開始します。<br /><pre class="code"><span class="rem">//位置を取得</span><br />pe.getLocation();<br /></pre>位置が取れると、上記で設定したコールバックメソッドが呼び出されます。<br /><pre class="code"><span class="rem">//位置が取得できたら</span><br /><span class="keyword">private</span> <span class="keyword">function</span> onGetLocation(x:<span class="keyword">Number</span>, y:<span class="keyword">Number</span>, r:int, info:Object):<span class="keyword">void</span>{<br />    <span class="keyword">if</span>(r &gt; <span class="num">0</span>){<br />        map.panTo(<span class="keyword">new</span> LatLng(x, y));<br />        map.addOverlay(<span class="keyword">new</span> Marker(<span class="keyword">new</span> LatLng(x, y)));<br />    }<br />}<br /></pre>xyに経度緯度が入ってくるので、あとはそれをGoogleMapsAPIに食わせるなり何なりと。rは電波捕捉数兼エラーコードなので、0以上であることを確認しておく。infoには各種情報が連想配列になって入っているので必要に応じて使えます。<br /><br />それから、位置登録ボタンが押された場合は、<br /><pre class="code"><span class="rem">//登録用のインタフェースをたたく</span><br />pe.registerLocation(map);<br /></pre>という具合に、登録用APIを呼びます。引数mapを指定してますが、指定しなくてもOK。<br /><br />画面の作りはこんな感じで。PlaceEngineの推奨構成があるのでそれに準拠してます。<br /><pre class="code">  <span class="tag">&lt;mx:Panel <span class="attr">title=</span><span class="value">&quot;PlaceEngine API Flash version. Ver.20080726&quot;</span> <span class="attr">width=</span><span class="value">&quot;100%&quot;</span> <span class="attr">height=</span><span class="value">&quot;100%&quot;</span> <span class="attr">layout=</span><span class="value">&quot;absolute&quot;</span>&gt;</span><br />    <span class="tag">&lt;mx:UIComponent <span class="attr">id=</span><span class="value">&quot;mapContainer&quot;</span> <br />        <span class="attr">initialize=</span><span class="value">&quot;startMap(event);&quot;</span><br />        <span class="attr">resize=</span><span class="value">&quot;resizeMap(event)&quot;</span> <br />        <span class="attr">right=</span><span class="value">&quot;0&quot;</span> <span class="attr">left=</span><span class="value">&quot;0&quot;</span> <span class="attr">bottom=</span><span class="value">&quot;78&quot;</span> <span class="attr">top=</span><span class="value">&quot;30&quot;</span>/&gt;</span><br />    <span class="tag">&lt;mx:TextArea <span class="attr">id=</span><span class="value">&quot;messageArea&quot;</span> <span class="attr">right=</span><span class="value">&quot;0&quot;</span> <span class="attr">left=</span><span class="value">&quot;0&quot;</span> <span class="attr">bottom=</span><span class="value">&quot;0&quot;</span> <span class="attr">height=</span><span class="value">&quot;70&quot;</span> <span class="attr">wordWrap=</span><span class="value">&quot;true&quot;</span> <span class="attr">verticalScrollPolicy=</span><span class="value">&quot;auto&quot;</span>/&gt;</span><br />    <span class="tag">&lt;mx:Button <span class="attr">icon=</span><span class="value">&quot;@Embed('asset/wide_bt2.png')&quot;</span> <span class="attr">width=</span><span class="value">&quot;102&quot;</span> <span class="attr">height=</span><span class="value">&quot;22&quot;</span> <span class="attr">id=</span><span class="value">&quot;registerButton&quot;</span><br />        <span class="attr">click=</span><span class="value">&quot;registerButtonClick(event)&quot;</span> <span class="attr">enabled=</span><span class="value">&quot;true&quot;</span><br />        <span class="attr">useHandCursor=</span><span class="value">&quot;true&quot;</span> <span class="attr">buttonMode=</span><span class="value">&quot;true&quot;</span> <span class="attr">mouseChildren=</span><span class="value">&quot;false&quot;</span> <span class="attr">left=</span><span class="value">&quot;5&quot;</span> <span class="attr">top=</span><span class="value">&quot;5&quot;</span>/&gt;</span><br />    <span class="tag">&lt;mx:Button <span class="attr">icon=</span><span class="value">&quot;@Embed('asset/wide_bt1.png')&quot;</span> <span class="attr">width=</span><span class="value">&quot;102&quot;</span> <span class="attr">height=</span><span class="value">&quot;22&quot;</span> <span class="attr">id=</span><span class="value">&quot;getLocationButton&quot;</span><br />        <span class="attr">click=</span><span class="value">&quot;getLocationButtonClick(event)&quot;</span> <span class="attr">enabled=</span><span class="value">&quot;true&quot;</span><br />        <span class="attr">useHandCursor=</span><span class="value">&quot;true&quot;</span> <span class="attr">buttonMode=</span><span class="value">&quot;true&quot;</span> <span class="attr">mouseChildren=</span><span class="value">&quot;false&quot;</span> <span class="attr">top=</span><span class="value">&quot;5&quot;</span> <span class="attr">left=</span><span class="value">&quot;115&quot;</span>/&gt;</span><br />    <span class="tag">&lt;mx:Image <span class="attr">id=</span><span class="value">&quot;peLogo&quot;</span> <span class="attr">source=</span><span class="value">&quot;@Embed('asset/logo_wh.gif')&quot;</span>  <br />        <span class="attr">click=</span><span class="value">&quot;navigateToURL(new URLRequest('http://www.placeengine.com'))&quot;</span><br />         <span class="attr">useHandCursor=</span><span class="value">&quot;true&quot;</span> <span class="attr">buttonMode=</span><span class="value">&quot;true&quot;</span> <span class="attr">mouseChildren=</span><span class="value">&quot;false&quot;</span> <span class="attr">top=</span><span class="value">&quot;5&quot;</span> <span class="attr">right=</span><span class="value">&quot;5&quot;</span>/&gt;</span><br />    <span class="tag">&lt;mx:Label <span class="attr">id=</span><span class="value">&quot;statusLabel&quot;</span> <span class="attr">top=</span><span class="value">&quot;7&quot;</span> <span class="attr">left=</span><span class="value">&quot;220&quot;</span> <span class="attr">right=</span><span class="value">&quot;125&quot;</span> <span class="attr">text=</span><span class="value">&quot;PlaceEngineをインストールすると現在位置取得機能が使えるようになります&quot;</span>/&gt;</span><br />  <span class="tag">&lt;/mx:Panel&gt;</span></pre><br />以下、コードの全文。ダウンロードは<a href="http://blog-imgs-19.fc2.com/v/1/2/v12engine/GoogleMapTest.txt" target="_blank">こちら</a>。txtをmxmlに変更して使ってください。<br /><br /><pre class="code"><span class="tag">&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;</span><br /><span class="tag">&lt;mx:Application <span class="attr">xmlns:mx=</span><span class="value">&quot;http://www.adobe.com/2006/mxml&quot;</span> <span class="attr">layout=</span><span class="value">&quot;absolute&quot;</span> <span class="attr">width=</span><span class="value">&quot;100%&quot;</span> <span class="attr">height=</span><span class="value">&quot;100%&quot;</span><br />    <span class="attr">applicationComplete=</span><span class="value">&quot;init()&quot;</span>&gt;</span><br /><br />  <span class="tag">&lt;mx:Script&gt;</span><br />    &lt;![CDATA[<br />        <span class="keyword">import</span> mx.controls.Text;<br /><br />        <span class="keyword">import</span> flash.events.Event;<br /><br />        <span class="keyword">import</span> PlaceEngineAPI.PlaceEngineAPI;<br /><br />        <span class="keyword">import</span> com.google.maps.Map;<br />        <span class="keyword">import</span> com.google.maps.MapType;<br />        <span class="keyword">import</span> com.google.maps.MapEvent;<br />        <span class="keyword">import</span> com.google.maps.LatLng;<br />        <span class="keyword">import</span> com.google.maps.overlays.Marker;<br />        <span class="keyword">import</span> com.google.maps.controls.MapTypeControl;<br />        <span class="keyword">import</span> com.google.maps.controls.PositionControl;<br />        <span class="keyword">import</span> com.google.maps.controls.ZoomControl;<br />        <br />    <br />         <span class="rem">//PlaceEngineの実体</span><br />         <span class="keyword">private</span> <span class="keyword">var</span> pe:PlaceEngineAPI;<br /><br />        <span class="rem">//GoogleMapの実体</span><br />         <span class="keyword">private</span> <span class="keyword">var</span> map:Map;<br />        <span class="rem">//マップ初期化OKかフラグ </span><br />         <span class="keyword">private</span> <span class="keyword">var</span> isMapReady:Boolean = <span class="keyword">false</span>;<br />    <br />        <span class="rem">//初期化コード</span><br />        <span class="keyword">public</span> <span class="keyword">function</span> init():<span class="keyword">void</span>{<br />            <br />            <span class="rem">//アプリケーションキー(自分で取得したものをここにセットする)</span><br />            <span class="keyword">var</span> appk:<span class="keyword">String</span> = <span class="str">&quot;ABCDEFG......&quot;</span>;<br /><br />            <span class="rem">//PlaceEngineの実体を生成</span><br />            pe = <span class="keyword">new</span> PlaceEngineAPI(statusLabel, appk, onFindClient, onGetLocation, onMessage, <span class="keyword">false</span>);<br />            <br />            <span class="rem">//PEクライアントの有無を確認</span><br />            pe.pingClient();<br />            <br />        }<br /><br />        <span class="rem">//GoogleMap初期化コード</span><br />        <span class="keyword">public</span> <span class="keyword">function</span> startMap(event:Event):<span class="keyword">void</span> {<br />            <br />            <span class="rem">//mapを生成</span><br />            map = <span class="keyword">new</span> Map();<br />            <br />            <span class="rem">//上手くgoogleと接続できてたら</span><br />            <span class="keyword">if</span>(map != <span class="keyword">null</span>){<br />                <span class="rem">//キーをセット(自分で取得したものをここにセットする)</span><br />                map.key=<span class="str">&quot;ABCDEFG....&quot;</span>;<br />                <br />                <span class="rem">//イベントリスナ登録</span><br />                map.addEventListener(MapEvent.MAP_READY, onMapReady);<br />                <br />                <span class="rem">//マップを登録</span><br />                mapContainer.addChild(map);<br />                <br />            }<span class="keyword">else</span>{<br />                trace(<span class="str">&quot;GoogleMapロードエラー&quot;</span>);<br />            }<br />        }<br />        <br />        <span class="rem">//位置取得</span><br />        <span class="keyword">private</span> <span class="keyword">function</span> getLocationButtonClick(event:Event):<span class="keyword">void</span>{<br /><br />            <span class="rem">//PEサイトへのリンクロゴを消す(ステータス表示のため)</span><br />            <span class="keyword">if</span>(peLogo.visible == <span class="keyword">true</span>){<br />                peLogo.visible = <span class="keyword">false</span>;<br />            }<br />            <br />            <span class="rem">//位置を取得</span><br />            pe.getLocation();<br />        }<br />        <br />        <span class="rem">//位置が取得できたら</span><br />        <span class="keyword">private</span> <span class="keyword">function</span> onGetLocation(x:<span class="keyword">Number</span>, y:<span class="keyword">Number</span>, r:int, info:Object):<span class="keyword">void</span>{<br />            <br />            <span class="keyword">if</span>(r &gt; <span class="num">0</span>){<br />                map.panTo(<span class="keyword">new</span> LatLng(x, y));<br />                map.addOverlay(<span class="keyword">new</span> Marker(<span class="keyword">new</span> LatLng(x, y)));<br />            }<br />        }<br /><br />        <span class="rem">//位置登録</span><br />        <span class="keyword">private</span> <span class="keyword">function</span> registerButtonClick(event:Event):<span class="keyword">void</span>{<br />            <span class="rem">//PEサイトへのリンクロゴを消す(ステータス表示のため)</span><br />            <span class="keyword">if</span>(peLogo.visible == <span class="keyword">true</span>){<br />                peLogo.visible = <span class="keyword">false</span>;<br />            }<br />            <span class="rem">//登録用のインタフェースをたたく</span><br />            pe.registerLocation(map);<br />        }<br />        <br />        <span class="rem">//PEクライアントに対するping応答があったら</span><br />        <span class="keyword">private</span> <span class="keyword">function</span> onFindClient(ver:<span class="keyword">String</span>):<span class="keyword">void</span>{<br />            <span class="rem">//messageArea.text += &quot;\r&quot; + &quot;PlaceEngineクライアントのバージョンは &quot; + ver + &quot; です&quot;;</span><br />        }<br />        <br />        <span class="rem">//メッセージが出力されると呼ばれるメソッド</span><br />        <span class="keyword">private</span> <span class="keyword">function</span> onMessage(msg:<span class="keyword">String</span>):<span class="keyword">void</span>{<br />            messageArea.text += <span class="str">&quot;\r&quot;</span> + msg;<br />        }<br />        <br />        <span class="rem">//リサイズされたとき</span><br />        <span class="keyword">public</span> <span class="keyword">function</span> resizeMap(event:Event):<span class="keyword">void</span> {<br />            <br />            <span class="rem">//マップの準備ができてないときにもこのイベントは発生するので</span><br />            <span class="rem">//準備ができているかをチェックする</span><br />            <span class="keyword">if</span>(isMapReady == <span class="keyword">true</span>){<br />                <br />                <span class="rem">//マップがOKならリサイズする</span><br />                map.setSize(<span class="keyword">new</span> Point(mapContainer.width, mapContainer.height));<br />            }<br />        }<br />    <br />        <span class="rem">//マップの準備が出来たら呼ばれるイベントハンドラ  </span><br />        <span class="keyword">private</span> <span class="keyword">function</span> onMapReady(event:MapEvent):<span class="keyword">void</span> {<br />            <br />            <span class="rem">//マップの準備ができたかフラグ</span><br />            isMapReady = <span class="keyword">true</span>;<br />            <br />            <span class="rem">//初期位置を皇居にセット</span><br />            map.setCenter(<span class="keyword">new</span> LatLng(<span class="num">35.684281</span>,<span class="num">139.75163</span>), <span class="num">14</span>, MapType.NORMAL_MAP_TYPE);<br />            <br />            <span class="rem">//各種部品を付ける</span><br />            map.addControl(<span class="keyword">new</span> ZoomControl());<br />            map.addControl(<span class="keyword">new</span> PositionControl());<br />            map.addControl(<span class="keyword">new</span> MapTypeControl());<br />            <br />            <span class="rem">//マップがOKならリサイズする</span><br />            map.setSize(<span class="keyword">new</span> Point(mapContainer.width, mapContainer.height));<br /><br />        }<br />    ]]&gt;<br />  <span class="tag">&lt;/mx:Script&gt;</span><br />    <br />  <span class="tag">&lt;mx:Panel <span class="attr">title=</span><span class="value">&quot;PlaceEngine API Flash version. Ver.20080726&quot;</span> <span class="attr">width=</span><span class="value">&quot;100%&quot;</span> <span class="attr">height=</span><span class="value">&quot;100%&quot;</span> <span class="attr">layout=</span><span class="value">&quot;absolute&quot;</span>&gt;</span><br />    <span class="tag">&lt;mx:UIComponent <span class="attr">id=</span><span class="value">&quot;mapContainer&quot;</span> <br />        <span class="attr">initialize=</span><span class="value">&quot;startMap(event);&quot;</span><br />        <span class="attr">resize=</span><span class="value">&quot;resizeMap(event)&quot;</span> <br />        <span class="attr">right=</span><span class="value">&quot;0&quot;</span> <span class="attr">left=</span><span class="value">&quot;0&quot;</span> <span class="attr">bottom=</span><span class="value">&quot;78&quot;</span> <span class="attr">top=</span><span class="value">&quot;30&quot;</span>/&gt;</span><br />    <span class="tag">&lt;mx:TextArea <span class="attr">id=</span><span class="value">&quot;messageArea&quot;</span> <span class="attr">right=</span><span class="value">&quot;0&quot;</span> <span class="attr">left=</span><span class="value">&quot;0&quot;</span> <span class="attr">bottom=</span><span class="value">&quot;0&quot;</span> <span class="attr">height=</span><span class="value">&quot;70&quot;</span> <span class="attr">wordWrap=</span><span class="value">&quot;true&quot;</span> <span class="attr">verticalScrollPolicy=</span><span class="value">&quot;auto&quot;</span>/&gt;</span><br />    <span class="tag">&lt;mx:Button <span class="attr">icon=</span><span class="value">&quot;@Embed('asset/wide_bt2.png')&quot;</span> <span class="attr">width=</span><span class="value">&quot;102&quot;</span> <span class="attr">height=</span><span class="value">&quot;22&quot;</span> <span class="attr">id=</span><span class="value">&quot;registerButton&quot;</span><br />        <span class="attr">click=</span><span class="value">&quot;registerButtonClick(event)&quot;</span> <span class="attr">enabled=</span><span class="value">&quot;true&quot;</span><br />        <span class="attr">useHandCursor=</span><span class="value">&quot;true&quot;</span> <span class="attr">buttonMode=</span><span class="value">&quot;true&quot;</span> <span class="attr">mouseChildren=</span><span class="value">&quot;false&quot;</span> <span class="attr">left=</span><span class="value">&quot;5&quot;</span> <span class="attr">top=</span><span class="value">&quot;5&quot;</span>/&gt;</span><br />    <span class="tag">&lt;mx:Button <span class="attr">icon=</span><span class="value">&quot;@Embed('asset/wide_bt1.png')&quot;</span> <span class="attr">width=</span><span class="value">&quot;102&quot;</span> <span class="attr">height=</span><span class="value">&quot;22&quot;</span> <span class="attr">id=</span><span class="value">&quot;getLocationButton&quot;</span><br />        <span class="attr">click=</span><span class="value">&quot;getLocationButtonClick(event)&quot;</span> <span class="attr">enabled=</span><span class="value">&quot;true&quot;</span><br />        <span class="attr">useHandCursor=</span><span class="value">&quot;true&quot;</span> <span class="attr">buttonMode=</span><span class="value">&quot;true&quot;</span> <span class="attr">mouseChildren=</span><span class="value">&quot;false&quot;</span> <span class="attr">top=</span><span class="value">&quot;5&quot;</span> <span class="attr">left=</span><span class="value">&quot;115&quot;</span>/&gt;</span><br />    <span class="tag">&lt;mx:Image <span class="attr">id=</span><span class="value">&quot;peLogo&quot;</span> <span class="attr">source=</span><span class="value">&quot;@Embed('asset/logo_wh.gif')&quot;</span>  <br />        <span class="attr">click=</span><span class="value">&quot;navigateToURL(new URLRequest('http://www.placeengine.com'))&quot;</span><br />         <span class="attr">useHandCursor=</span><span class="value">&quot;true&quot;</span> <span class="attr">buttonMode=</span><span class="value">&quot;true&quot;</span> <span class="attr">mouseChildren=</span><span class="value">&quot;false&quot;</span> <span class="attr">top=</span><span class="value">&quot;5&quot;</span> <span class="attr">right=</span><span class="value">&quot;5&quot;</span>/&gt;</span><br />    <span class="tag">&lt;mx:Label <span class="attr">id=</span><span class="value">&quot;statusLabel&quot;</span> <span class="attr">top=</span><span class="value">&quot;7&quot;</span> <span class="attr">left=</span><span class="value">&quot;220&quot;</span> <span class="attr">right=</span><span class="value">&quot;125&quot;</span> <span class="attr">text=</span><span class="value">&quot;PlaceEngineをインストールすると現在位置取得機能が使えるようになります&quot;</span>/&gt;</span><br />  <span class="tag">&lt;/mx:Panel&gt;</span><br />  <br /><span class="tag">&lt;/mx:Application&gt;</span></pre> ]]>
</content:encoded>
<dc:subject>flex</dc:subject>
<dc:date>2008-07-27T16:48:43+09:00</dc:date>
<dc:creator>k</dc:creator>
<dc:publisher>FC2-BLOG</dc:publisher>
</item>
<item rdf:about="http://v12engine.blog116.fc2.com/blog-entry-12.html">
<link>http://v12engine.blog116.fc2.com/blog-entry-12.html</link>
<title>PlaceEngine ActionScript API公開</title>
<description> PlaceEngineのAPIをFlex(ActionScript)から利用するためのライブラリを公開します。現状では、crossdomain問題があるため、Flex(Flash)からPlaceEngineのAPIを叩いて位置測定などのサービスを利用することはできません。(デバッグモードでは動くけど。)使えるようになるにはPlaceEngineクライアントとサーバの対応が必要で、実は現在、クウジットに対応をお願いしています。(いろいろありがとうございます。＞クウジットの皆様)こ
 </description>
<content:encoded>
<![CDATA[ PlaceEngineのAPIをFlex(ActionScript)から利用するためのライブラリを公開します。<br /><br />現状では、crossdomain問題があるため、Flex(Flash)からPlaceEngineのAPIを叩いて位置測定などのサービスを利用することはできません。(デバッグモードでは動くけど。)<br />使えるようになるにはPlaceEngineクライアントとサーバの対応が必要で、実は現在、クウジットに対応をお願いしています。(いろいろありがとうございます。＞クウジットの皆様)<br /><br />このライブラリは、その対応をお願いする過程で私がテストのために作っていたコードを、それらしい形式にまとめたものです。コードはクウジットにも提供してありますが、こちらでも公開してもいいかなと。(ちなみに私はクウジットのまわしものではありませんw)<br /><br />ライブラリは、一部ActionScriptに特有なところを除くと、PlaceEngine JavaScript APIとほとんど同じようにインタフェースを作ってありますので、そちらのドキュメントを参照すれば概ね同じように使えるはずです。<br /><br />PlaceEngine側のFlex(Flash)対応がそう遠くないうちになされるだろう、という期待のもとに、それに備えてライブラリとして公開します。皆さんどんどん使ってください。<br />＃なお、コードについてもっといい書き方があるよ、って場合にはぜひ教えてください。<br /><br />ソースコードはこちら。<a href="http://blog-imgs-19.fc2.com/v/1/2/v12engine/PlaceEngineAPI.txt" target="_blank">PlaceEngine ActionScript APIライブラリ</a>　(拡張子を.txtから.asにして使ってください。)<br /><br /><br />以下全文です。<br /><br /><pre class="code"><span class="keyword">package</span> PlaceEngineAPI<br />{<br />    <span class="keyword">import</span> com.google.maps.LatLng;<br />    <span class="keyword">import</span> com.google.maps.Map;<br />    <br />    <span class="keyword">import</span> flash.events.*;<br />    <span class="keyword">import</span> flash.net.URLLoader;<br />    <span class="keyword">import</span> flash.net.URLRequest;<br />    <span class="keyword">import</span> flash.net.navigateToURL;<br />    <span class="keyword">import</span> flash.system.Security;<br />    <br />    <span class="keyword">import</span> mx.controls.Label;<br /><br />    <span class="keyword">public</span> <span class="keyword">class</span> PlaceEngineAPI<br />    {<br />        <span class="rem">//ラベルオブジェクト(ステータス表示用)</span><br />        <span class="keyword">private</span> <span class="keyword">var</span> labelObject:Label;<br /><br />        <span class="rem">//アプリケーションキー</span><br />        <span class="keyword">private</span> <span class="keyword">var</span> appk:<span class="keyword">String</span>;<br /><br />        <span class="keyword">private</span> <span class="keyword">var</span> findClientFunc:Function;<br />        <span class="keyword">private</span> <span class="keyword">var</span> getLocationFunc:Function;<br />        <span class="keyword">private</span> <span class="keyword">var</span> messageFunc:Function;<br />        <br />        <span class="keyword">private</span> <span class="keyword">var</span> debugMode:Boolean;<br />        <br />        <span class="rem">//タイムスタンプ</span><br />        <span class="keyword">private</span> <span class="keyword">var</span> timeStamp:Date;<br /><br />        <span class="rem">//このライブラリのバージョン</span><br />        <span class="keyword">private</span> <span class="keyword">const</span> VERSION:<span class="keyword">String</span> = <span class="str">&quot;20080726&quot;</span>;<br />        <br />        <span class="rem">//コンストラクタ</span><br />        <span class="keyword">public</span> <span class="keyword">function</span> PlaceEngineAPI(label:Label, key:<span class="keyword">String</span>, <br />            findCliFunc:Function=<span class="keyword">null</span>, getLocFunc:Function=<span class="keyword">null</span>, mesFunc:Function=<span class="keyword">null</span>,<br />            debug:Boolean=<span class="keyword">false</span>)<br />        {<br />            <span class="rem">//引数内容をローカル変数にコピー</span><br />            labelObject = label;<br />            appk = key;<br />            findClientFunc = findCliFunc;<br />            getLocationFunc = getLocFunc;<br />            messageFunc = mesFunc;<br />            debugMode = debug;<br />        }<br />        <br />        <span class="rem">//PEクライアントの有無を確認する</span><br />        <span class="keyword">public</span> <span class="keyword">function</span> pingClient(str:<span class="keyword">String</span>=<span class="keyword">null</span>):<span class="keyword">void</span>{<br /><br />            <span class="rem">//引数に文字列が指定されていたら</span><br />            <span class="keyword">if</span>(str != <span class="keyword">null</span>){<br />                <span class="rem">//文字列を出力</span><br />                printMsg(str);<br />            }<br />            <br />            <span class="rem">//クライアントが存在しているかを確認</span><br />            <br />            timeStamp = <span class="keyword">new</span> Date();<br /><br />            <span class="keyword">var</span> URL:<span class="keyword">String</span> = <span class="str">&quot;http://localhost:5448/ackjs?t=&quot;</span>;<br />                URL += timeStamp.milliseconds;<br />            <span class="keyword">var</span> request:URLRequest = <span class="keyword">new</span> URLRequest(URL);<br />            <span class="keyword">var</span> loader:URLLoader = <span class="keyword">new</span> URLLoader();<br /><br />            setListeners(loader, <span class="str">&quot;Ack&quot;</span>);<br />            <br />            sendRequest(loader, request);<br />        }<br /><br />        <span class="rem">//PEクライアントに対するAckを投げて応答があったら呼ばれるイベントハンドラ</span><br />        <span class="keyword">private</span> <span class="keyword">function</span> completeHanderAck(event:Event):<span class="keyword">void</span>{<br /><br />            printMsg(<span class="str">&quot;PlaceEngineクライアントが見つかりました&quot;</span>);<br />            <br />            <span class="keyword">var</span> response:URLLoader = URLLoader(event.target);<br /><br />            <span class="rem">//冒頭の&quot;ackRTAG(&quot;&quot;と&quot;&quot;);&quot;を外す</span><br />            <span class="keyword">var</span> tmpString:<span class="keyword">String</span> = <span class="keyword">String</span>(response.data);<br />            <span class="keyword">var</span> ackRTAG:<span class="keyword">String</span> = tmpString.substr(<span class="num">9</span>, tmpString.length-<span class="num">13</span>);<br />    <br />            <span class="rem">//コールバック関数を呼ぶ</span><br />            <span class="keyword">if</span>(findClientFunc != <span class="keyword">null</span>){<br />                findClientFunc.call(findClientFunc, ackRTAG);<br />            }<br />        }<br /><br />        <span class="rem">//位置登録ページを開く</span><br />        <span class="rem">//public fnction registerLocation():void{</span><br />        <span class="keyword">public</span> <span class="keyword">function</span> registerLocation(map:Map=<span class="keyword">null</span>):<span class="keyword">void</span>{<br /><br />            <span class="keyword">var</span> optionStr:<span class="keyword">String</span> = <span class="str">&quot;&quot;</span>;<br /><br />            <span class="rem">//引数にGoogle MapのMapが指定されていたら</span><br />            <span class="keyword">if</span>(map != <span class="keyword">null</span>){<br />                <span class="keyword">var</span> latlng:LatLng = map.getCenter();<br />                optionStr = <span class="str">&quot;&amp;x=&quot;</span> + latlng.lng().toString();<br />                optionStr += <span class="str">&quot;&amp;y=&quot;</span> + latlng.lat().toString();<br />                optionStr += <span class="str">&quot;&amp;z=&quot;</span> + map.getZoom().toString();<br />            }<br /><br />            <span class="rem">//PlaceEngineの位置登録ページを開く</span><br />            <span class="keyword">var</span> url:URLRequest = <span class="keyword">new</span> URLRequest(<span class="str">&quot;http://www.placeengine.com/map?regiloc=1&quot;</span> + optionStr);<br />            navigateToURL(url);<br />        }<br />        <br />        <span class="keyword">public</span> <span class="keyword">function</span> getLocation():<span class="keyword">void</span>{<br />        <br />            printMsg(<span class="str">&quot;WiFi情報取得中...&quot;</span>);<br />                <br />            <span class="rem">//タイムスタンプとして現在時刻を取得</span><br />            timeStamp = <span class="keyword">new</span> Date();<br />    <br />            <span class="rem">//URL文字列を作成</span><br />            <span class="keyword">var</span> URL:<span class="keyword">String</span> = <span class="str">&quot;http://localhost:5448/rtagjs?t=&quot;</span>;<br />                URL += timeStamp.milliseconds + <span class="str">&quot;&amp;appk=&quot;</span>;<br />                URL += appk;<br />            <span class="keyword">var</span> request:URLRequest = <span class="keyword">new</span> URLRequest(URL);<br />            <span class="keyword">var</span> loader:URLLoader = <span class="keyword">new</span> URLLoader();<br />            <br />            <span class="rem">//イベントハンドラをセット</span><br />            setListeners(loader, <span class="str">&quot;Client&quot;</span>);<br />            <br />            <span class="rem">//実際にリクエストを発行</span><br />            sendRequest(loader, request);<br /><br />        }<br /><br />        <span class="rem">//イベントハンドラをセットする</span><br />        <span class="keyword">private</span> <span class="keyword">function</span> setListeners(dispatcher:IEventDispatcher, type:<span class="keyword">String</span>):<span class="keyword">void</span> {<br />            <span class="rem">//電測と位置取得とAckでハンドラを切り替える処理</span><br />            <span class="keyword">if</span>(type == <span class="str">&quot;Client&quot;</span>){<br />                dispatcher.addEventListener(Event.COMPLETE, completeHandlerClient);<br />            }<span class="keyword">else</span> <span class="keyword">if</span>(type == <span class="str">&quot;Server&quot;</span>){<br />                dispatcher.addEventListener(Event.COMPLETE, completeHandlerServer);<br />            }<span class="keyword">else</span> <span class="keyword">if</span>(type == <span class="str">&quot;Ack&quot;</span>){<br />                dispatcher.addEventListener(Event.COMPLETE, completeHanderAck);<br />            }<br />            <span class="rem">//共通で利用するハンドラ</span><br />            dispatcher.addEventListener(Event.OPEN, openHandler);<br />            dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler);<br />            dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);<br />            dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);<br />            dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);<br />        }<br /><br />        <span class="rem">//HTTP Request送信用メソッド</span><br />        <span class="keyword">private</span> <span class="keyword">function</span> sendRequest(loader:URLLoader, request:URLRequest):<span class="keyword">void</span>{<br />            try {<br />                loader.load(request);<br />            }<span class="keyword">catch</span>(error:ArgumentError){<br />                debugPrintMsg(<span class="str">&quot;An ArgumentError has occurred.&quot;</span>);    <br />            }<span class="keyword">catch</span>(error:SecurityError){<br />                debugPrintMsg(<span class="str">&quot;A SecurityError has occurred.&quot;</span>);   <br />            }<br />        }<br />        <span class="rem">//GETに対する応答が取得できたら呼ばれるハンドラ(クライアント)</span><br />        <span class="keyword">private</span> <span class="keyword">function</span> completeHandlerClient(event:Event):<span class="keyword">void</span>{<br />            <br />            printMsg(<span class="str">&quot;PlaceEngineサーバに問い合わせ中...&quot;</span>);<br />            <br />            <span class="keyword">var</span> response:URLLoader = URLLoader(event.target);<br />    <br />            <span class="rem">//冒頭の&quot;recvRTAG&quot;と&quot;);&quot;を外して、パラメータを分解</span><br />            <span class="keyword">var</span> recvRTAG:<span class="keyword">String</span> = <span class="keyword">String</span>(response.data);<br />            <span class="keyword">var</span> rtagArray:Array = recvRTAG.substr(<span class="num">9</span>, recvRTAG.length-<span class="num">12</span>).split(<span class="str">&quot;,&quot;</span>);<br />    <br />            <span class="rem">//rtag, numapを取得</span><br />            <span class="keyword">var</span> tmpString:<span class="keyword">String</span> = rtagArray[<span class="num">0</span>];<br />            <span class="keyword">var</span> rtag:<span class="keyword">String</span> = tmpString.substr(<span class="num">1</span>, tmpString.length-<span class="num">2</span>); <span class="rem">//&quot;&quot;を外す処理</span><br />            <span class="keyword">var</span> numap:int = rtagArray[<span class="num">1</span>];<br />            <br />            <span class="keyword">if</span>(numap &gt; <span class="num">0</span>){<br />                <span class="rem">//電測が正常に取得できている場合</span><br />    <br />                <span class="rem">//サーバアクセスに先立って、crossdomain.xmlの場所を指定</span><br />                Security.loadPolicyFile(<span class="str">&quot;http://www.placeengine.com/api/crossdomain.xml&quot;</span>);<br />                <br />                <span class="rem">//URL文字列を作成</span><br />                <span class="keyword">var</span> URL2:<span class="keyword">String</span> = <span class="str">&quot;http://www.placeengine.com/api/loc?t=&quot;</span>;<br />                    URL2 += timeStamp.milliseconds + <span class="str">&quot;&amp;rtag=&quot;</span>;<br />                    URL2 += rtag + <span class="str">&quot;&amp;appk=&quot;</span>;<br />                    URL2 += appk + <span class="str">&quot;&amp;fmt=json&quot;</span>;<br />                <span class="keyword">var</span> request2:URLRequest = <span class="keyword">new</span> URLRequest(URL2);<br />                <span class="keyword">var</span> loader2:URLLoader = <span class="keyword">new</span> URLLoader();<br />                <br />                <span class="rem">//イベントハンドラをセット</span><br />                setListeners(loader2, <span class="str">&quot;Server&quot;</span>);<br />                <br />                <span class="rem">//実際にリクエストを発行</span><br />                sendRequest(loader2, request2);<br /><br />            }<span class="keyword">else</span>{<br />                <span class="rem">//電測でエラーの場合</span><br />                debugPrintMsg(<span class="str">&quot;電測でエラー発生 numap= &quot;</span> + numap);<br /><br />                <span class="rem">//callBack関数を呼ぶ</span><br />                <span class="keyword">if</span>(getLocationFunc != <span class="keyword">null</span>){<br />                    getLocationFunc.call(getLocationFunc, <span class="num">0</span>, <span class="num">0</span>, numap, <span class="keyword">null</span>);<br />                }<br />            }<br />        }<br />    <br />        <span class="rem">//GETに対する応答が取得できたら呼ばれるハンドラ(サーバ)</span><br />        <span class="keyword">private</span> <span class="keyword">function</span> completeHandlerServer(event:Event):<span class="keyword">void</span>{<br />            <span class="rem">//返す値を初期化</span><br />            <span class="keyword">var</span> lat:<span class="keyword">Number</span> = <span class="num">0</span>;<br />            <span class="keyword">var</span> lon:<span class="keyword">Number</span> = <span class="num">0</span>;<br />            <span class="keyword">var</span> range:int = <span class="num">0</span>;<br />            <span class="keyword">var</span> info:Object = <span class="keyword">new</span> Object();<br />            <br />            <span class="rem">//レスポンスを取り出す</span><br />            <span class="keyword">var</span> response2:URLLoader = URLLoader(event.target);<br />            <br />            <span class="rem">//取得文字列を解析する</span><br />            <span class="keyword">var</span> tmpMessage:<span class="keyword">String</span> = <span class="keyword">String</span>(response2.data);<br />            <span class="keyword">var</span> recvMessage:<span class="keyword">String</span> = tmpMessage.substr(<span class="num">1</span>, tmpMessage.length-<span class="num">3</span>);   <span class="rem">//両側の[]を外す</span><br />            <span class="keyword">var</span> param:Array = recvMessage.split(<span class="str">&quot;,&quot;</span>);<br />            <span class="keyword">var</span> param2:Array = recvMessage.split(<span class="str">&quot;{&quot;</span>);<br />            <br />            <span class="keyword">if</span>((param.length &gt;= <span class="num">4</span>) &amp;&amp; (param2.length &gt;= <span class="num">2</span>)){<br />                lat = param[<span class="num">1</span>];<br />                lon = param[<span class="num">0</span>];<br />                range = param[<span class="num">2</span>];<br /><br />                <span class="rem">//正常取得できている時</span><br />                <span class="keyword">if</span>(range &gt; <span class="num">0</span>){<br />                    <span class="rem">//infoの最後の&quot;}&quot;をはずす</span><br />                    <span class="keyword">var</span> tmpParam2:<span class="keyword">String</span> = <span class="keyword">String</span>(param2[<span class="num">1</span>]);<br />                    <span class="keyword">var</span> infoArray:Array = tmpParam2.substr(<span class="num">0</span>, tmpParam2.length-<span class="num">2</span>).split(<span class="str">&quot;,&quot;</span>); <span class="rem">//-2なのは}を外すため</span><br /><br />                    <span class="rem">//JSON形式を解析</span><br />                    <span class="keyword">for</span>(<span class="keyword">var</span> i:int=<span class="num">0</span>; i&lt;infoArray.length; i++){<br />                        <span class="rem">//&quot;:&quot;で前後に分割して</span><br />                        <span class="keyword">var</span> tmpArray:Array = <span class="keyword">String</span>(infoArray[i]).split(<span class="str">&quot;:&quot;</span>);<br />                        <span class="keyword">var</span> name:<span class="keyword">String</span> = tmpArray[<span class="num">0</span>].substr(<span class="num">1</span>, tmpArray[<span class="num">0</span>].length-<span class="num">2</span>);<br />                        <span class="keyword">var</span> value:<span class="keyword">String</span> = tmpArray[<span class="num">1</span>];<br />                        <span class="rem">//連想配列に格納</span><br />                        info[name] = value;<br />                    }<br /><br />                    printMsg(info[<span class="str">&quot;addr&quot;</span>].substr(<span class="num">1</span>, info[<span class="str">&quot;addr&quot;</span>].length-<span class="num">2</span>));<br />    <br />                }<span class="keyword">else</span>{<br />                    <span class="rem">//取得できていない時</span><br />                    debugPrintMsg(<span class="str">&quot;getLoc Error occurred. &quot;</span> + <span class="keyword">String</span>(param2[<span class="num">1</span>]));<br />                }<br />            }<br />            <span class="rem">//callBack関数を呼ぶ</span><br />            <span class="keyword">if</span>(getLocationFunc != <span class="keyword">null</span>){<br />                getLocationFunc.call(getLocationFunc, lat, lon, range, info);<br />            }<br />        }<br />        <br />        <span class="keyword">private</span> <span class="keyword">function</span> openHandler(event:Event):<span class="keyword">void</span> {<br />            debugPrintMsg(<span class="str">&quot;openHandler: &quot;</span> + event);<br />        }<br />    <br />        <span class="keyword">private</span> <span class="keyword">function</span> progressHandler(event:ProgressEvent):<span class="keyword">void</span> {<br />            debugPrintMsg(<span class="str">&quot;progressHandler loaded:&quot;</span> + event.bytesLoaded + <span class="str">&quot; total: &quot;</span> + event.bytesTotal);<br />        }<br />    <br />        <span class="keyword">private</span> <span class="keyword">function</span> securityErrorHandler(event:SecurityErrorEvent):<span class="keyword">void</span> {<br />            debugPrintMsg(<span class="str">&quot;securityErrorHandler: &quot;</span> + event);<br />        }<br />    <br />        <span class="keyword">private</span> <span class="keyword">function</span> httpStatusHandler(event:HTTPStatusEvent):<span class="keyword">void</span> {<br />            debugPrintMsg(<span class="str">&quot;httpStatusHandler: &quot;</span> + event);<br />        }<br />    <br />        <span class="keyword">private</span> <span class="keyword">function</span> ioErrorHandler(event:IOErrorEvent):<span class="keyword">void</span> {<br />            debugPrintMsg(<span class="str">&quot;ioErrorHandler: &quot;</span> + event);<br />        }<br />        <br />        <span class="rem">//ラベルにメッセージを出力するサポートメソッド</span><br />        <span class="keyword">private</span> <span class="keyword">function</span> printMsg(str:<span class="keyword">String</span>):<span class="keyword">void</span>{<br />            <span class="keyword">if</span>(labelObject != <span class="keyword">null</span>)   {<br />                labelObject.text = str;<br />            }<br />            <span class="rem">//onMessagコールバック関数が定義されている場合にはそちらにも出力</span><br />            <span class="keyword">if</span>(messageFunc != <span class="keyword">null</span>){<br />                messageFunc.call(messageFunc, str);<br />            }<br />        }<br />        <span class="rem">//デバッグ出力用</span><br />        <span class="keyword">private</span> <span class="keyword">function</span> debugPrintMsg(str:<span class="keyword">String</span>):<span class="keyword">void</span>{<br />            <span class="rem">//デバッグフラグがtrueでかつmessageFuncが指定されているときのみ</span><br />            <span class="keyword">if</span>(debugMode &amp;&amp; (messageFunc != <span class="keyword">null</span>)){<br />                messageFunc.call(messageFunc, str);<br />            }<br />        }<br />        <br />        <span class="rem">//バージョン応答機能</span><br />        <span class="keyword">private</span> <span class="keyword">function</span> getLibVersion():<span class="keyword">String</span>{<br />            <span class="keyword">return</span>(VERSION);<br />        }<br />    }<br />}<br /><br /></pre><br /> ]]>
</content:encoded>
<dc:subject>flex</dc:subject>
<dc:date>2008-07-26T14:53:27+09:00</dc:date>
<dc:creator>k</dc:creator>
<dc:publisher>FC2-BLOG</dc:publisher>
</item>
<item rdf:about="http://v12engine.blog116.fc2.com/blog-entry-11.html">
<link>http://v12engine.blog116.fc2.com/blog-entry-11.html</link>
<title>iPhone漢字変換の謎</title>
<description> メモ帳などで「池田」と入力、変換させると、次の予測候補に「大作」と出る。これは！と思っていろいろ調べてみると、他にもいくらかはあるみたい。池田だけが特別という訳でもない...か。「織田」→信長「豊臣」→×「徳川」→×「西郷」→隆盛「大久保」→利通「坂本」→×「松尾」→芭蕉「狩野」→永徳「近松」→門左衛門「小泉」→×「佐藤」→×「吉田」→×「橋本」→×「近衛」→×こうなると、「池田」はちょっと浮いてみえるけどなあ...。
 </description>
<content:encoded>
<![CDATA[ メモ帳などで「池田」と入力、変換させると、次の予測候補に「大作」と出る。<br /><br />これは！と思っていろいろ調べてみると、他にもいくらかはあるみたい。池田だけが特別という訳でもない...か。<br /><br />「織田」→信長<br />「豊臣」→×<br />「徳川」→×<br /><br />「西郷」→隆盛<br />「大久保」→利通<br />「坂本」→×<br /><br />「松尾」→芭蕉<br />「狩野」→永徳<br />「近松」→門左衛門<br /><br />「小泉」→×<br />「佐藤」→×<br />「吉田」→×<br />「橋本」→×<br />「近衛」→×<br /><br />こうなると、「池田」はちょっと浮いてみえるけどなあ...。 ]]>
</content:encoded>
<dc:subject>iPhone</dc:subject>
<dc:date>2008-07-18T08:31:30+09:00</dc:date>
<dc:creator>k</dc:creator>
<dc:publisher>FC2-BLOG</dc:publisher>
</item>
</rdf:RDF>