<?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>alt &#187; API</title>
	<atom:link href="http://blog.alt-scape.com/archives/tag/api/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.alt-scape.com</link>
	<description>alt-scape weblog</description>
	<lastBuildDate>Sat, 03 Dec 2011 18:00:33 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>TweetボタンのパラメータをJavascriptで動的に変えるサンプル</title>
		<link>http://blog.alt-scape.com/archives/420</link>
		<comments>http://blog.alt-scape.com/archives/420#comments</comments>
		<pubDate>Tue, 06 Sep 2011 04:40:21 +0000</pubDate>
		<dc:creator>alt</dc:creator>
				<category><![CDATA[サンプル]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Twitter]]></category>

		<guid isPermaLink="false">http://blog.alt-scape.com/?p=420</guid>
		<description><![CDATA[
ブログなどWEBサイトに設置するTweetボタンですが、
Twitter APIを参考にするとTweet内容をパラメータで設定できるようになっています。

■aタグのhref属性にGETパラメータで設定
&#60;scr [...]]]></description>
			<content:encoded><![CDATA[<p>
ブログなどWEBサイトに設置する<strong>Tweetボタン</strong>ですが、<br />
<a href="https://dev.twitter.com/docs/tweet-button" target="_blank">Twitter API</a>を参考にするとTweet内容をパラメータで設定できるようになっています。<br />
<br />
■aタグのhref属性にGETパラメータで設定<br />
<pre class="code"><span class="tag">&lt;script <span class="attr">src=</span><span class="value">&quot;http://platform.twitter.com/widgets.js&quot;</span> <span class="attr">type=</span><span class="value">&quot;text/javascript&quot;</span>&gt;</span><span class="tag">&lt;/script&gt;</span><br />
<span class="tag">&lt;div&gt;</span><br />
  <span class="tag">&lt;a <span class="attr">href=</span><span class="value">&quot;http://twitter.com/share?url=http%3A%2F%2Fdev.twitter.com&amp;amp;via=your_screen_name&quot;</span> <span class="attr">class=</span><span class="value">&quot;twitter-share-button&quot;</span>&gt;</span>Tweet<span class="tag">&lt;/a&gt;</span><br />
<span class="tag">&lt;/div&gt;</span></pre>
<br />
<div style="line-height:150%">
■data Attributesにパラメータを設定（HTML5の独自データ属性）<br />
<pre class="code"><span class="tag">&lt;script <span class="attr">src=</span><span class="value">&quot;http://platform.twitter.com/widgets.js&quot;</span> <span class="attr">type=</span><span class="value">&quot;text/javascript&quot;</span>&gt;</span><span class="tag">&lt;/script&gt;</span><br />
<span class="tag">&lt;div&gt;</span><br />
   <span class="tag">&lt;a <span class="attr">href=</span><span class="value">&quot;http://twitter.com/share&quot;</span> <span class="attr">class=</span><span class="value">&quot;twitter-share-button&quot;</span><br />
      <span class="attr">data-url=</span><span class="value">&quot;http://dev.twitter.com/pages/tweet_button&quot;</span><br />
      <span class="attr">data-via=</span><span class="value">&quot;your_screen_name&quot;</span><br />
      <span class="attr">data-text=</span><span class="value">&quot;Checking out this page about Tweet Buttons&quot;</span><br />
      <span class="attr">data-related=</span><span class="value">&quot;anywhere:The Javascript API&quot;</span><br />
      <span class="attr">data-count=</span><span class="value">&quot;vertical&quot;</span>&gt;</span>Tweet<span class="tag">&lt;/a&gt;</span><br />
<span class="tag">&lt;/div&gt;</span></pre>
<br />
<span id="more-420"></span><br />
やり方としては上記の<strong>aタグ</strong>か<strong>HTML5</strong>の<strong>独自データ属性</strong>かの2パターンになります。<br />
これを決めうちなり、サーバーサイドで予め仕込む分には問題ないですが、<br />
内容をフォームから取得したりとユーザーのインタラクションによって<br />
パラメータの中身が変わるときは<strong>Javascript</strong>で制御する必要が出てきます。<br />
<br />
Twitter APIはまず<strong>widgets.js</strong>という専用JSファイルを読み込んで<br />
こいつがaタグ要素をiframeに書き換える仕組みになっているようです。<br />
なので、事前にaタグ要素にパラメータを仕込むJavascriptサンプルを作ってみました。<br />
BUTTONを押すごとに入力フォームの値をTWEETします。<br />
<br />
<br />
<a href="http://blog.alt-scape.com/js/tweet_button/a_href.html" target="_blank"><strong>aタグのhref属性に設定するサンプル</strong></a><br />
<br />
<a href="http://blog.alt-scape.com/js/tweet_button/html5_dataset.html" target="_blank"><strong>data Attributesに設定するサンプル</strong></a><br />
※こちらは<strong>jQuery</strong>の<strong>.data()</strong>メソッドがうまく読み書きできなかったので、<a href="http://www.orangesoda.net/jquery.dataset.html" target="_blank">Dataset</a>プラグインを使用しています。<br />
<br />
</div>
<br />
</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alt-scape.com/archives/420/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iPhone（iOS4.2）の加速度センサーとジャイロセンサーの値をJavascriptで取得する</title>
		<link>http://blog.alt-scape.com/archives/397</link>
		<comments>http://blog.alt-scape.com/archives/397#comments</comments>
		<pubDate>Thu, 10 Feb 2011 06:20:19 +0000</pubDate>
		<dc:creator>alt</dc:creator>
				<category><![CDATA[メモ]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[スマートフォン]]></category>

		<guid isPermaLink="false">http://blog.alt-scape.com/?p=397</guid>
		<description><![CDATA[
去年の暮れにリリースされた「iOS4.2」から
WEBブラウザ（Safari）で加速度センサー、ジャイロセンサーのAPIにアクセスできるようになりました。
せっかくiPhone持っているんだし、試しにそれぞれの値をブラ [...]]]></description>
			<content:encoded><![CDATA[<p>
去年の暮れにリリースされた「<strong>iOS4.2</strong>」から<br />
WEBブラウザ（<strong>Safari</strong>）で<strong>加速度センサー</strong>、<strong>ジャイロセンサー</strong>のAPIにアクセスできるようになりました。<br />
せっかく<strong>iPhone</strong>持っているんだし、試しにそれぞれの値をブラウザに出力してみます。<br />
<br />
センサー値の取得は<strong>Javascript</strong>のイベントにて行います。<br />
まずiPhoneの傾きが変化すると<strong>devicemotion</strong>というイベントが発生するので<br />
window.addEventListenerで感知し、<br />
関数に渡されるイベントオブジェクトのプロパティよりそれぞれの値を取得します。<br />
別で<strong>deviceorientation</strong>というイベントがありますが、<br />
こちらでも回転の加速度のみ取得が可能です。<br />
<br />
<span id="more-397"></span><br />
・傾きの加速度は、<strong>acceleration</strong>オブジェクト。<br />
　（xが左～右、yが手前～奥、zが上～下）<br />
・傾きの重力加速度は、<strong>accelerationIncludingGravity</strong>オブジェクト。<br />
　（角度ではなく、重力加速度（9.80665）を基準にした値）<br />
・回転の加速度は<strong>rotationRate</strong>オブジェクト。<br />
　（<strong>alpha</strong>がz軸, <strong>beta</strong>がx軸, <strong>gamma</strong>プロパティがy軸）<br />
<br />
※<strong>iPhone4</strong>は3軸加速度センサー＋3軸ジャイロセンサーとの組み合わせで、<br />
前後左右上下の6軸の加速度、角速度、回転速度などの動きを詳細に検出可能ですが<br />
<strong>iPhone3GS</strong>は3軸重力加速度センサーのみとなりますので取得できるのは<br />
accelerationIncludingGravity.x<br />
accelerationIncludingGravity.y<br />
accelerationIncludingGravity.z<br />
のみとなります。<br />
<br />
<script type="text/javascript" src="http://jsdo.it/blogparts/YkYd/js"></script><p class="ttlBpJsdoit" style="width: 465px; margin: 0; text-align: right; font-size: 11px;">
<br />
<p style="line-heigth: 130%;">
詳しい解説はW3CやSafari公式をご覧ください。<br />
<br />
DeviceOrientation Event Specification<br />
<a href="http://dev.w3.org/geo/api/spec-source-orientation.html" target="_blank">http://dev.w3.org/geo/api/spec-source-orientation.html</a><br />
<br />
Safari Developer Library<br />
<a href="https://developer.apple.com/library/safari/#documentation/SafariDOMAdditions/Reference/DeviceMotionEventClassRef/DeviceMotionEvent/DeviceMotionEvent.html" target="_blank">DeviceMotionEvent Class Reference</a><br />
<a href="https://developer.apple.com/library/safari/#documentation/SafariDOMAdditions/Reference/DeviceOrientationEventClassRef/DeviceOrientationEvent/DeviceOrientationEvent.html" target="_blank">DeviceOrientationEvent Class Reference</a><br />
</p>
</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alt-scape.com/archives/397/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Twitter Streaming APIを使ったFlashサンプル</title>
		<link>http://blog.alt-scape.com/archives/367</link>
		<comments>http://blog.alt-scape.com/archives/367#comments</comments>
		<pubDate>Fri, 28 May 2010 10:35:10 +0000</pubDate>
		<dc:creator>alt</dc:creator>
				<category><![CDATA[サンプル]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Twitter]]></category>

		<guid isPermaLink="false">http://blog.alt-scape.com/?p=367</guid>
		<description><![CDATA[



Twitter APIのなかに
HTTP接続を開いたままにして、サーバ側から次々と更新情報をクライアントに送り出す
「Twitter Streaming API」というのがあります。

通常のRESTを使ったプル [...]]]></description>
			<content:encoded><![CDATA[<p>
<img src="http://blog.alt-scape.com/img/twitter_stream_api.jpg" alt="Twitter Stream API" class="imgnostyle" />
<br />
<br />
Twitter APIのなかに<br />
HTTP接続を開いたままにして、サーバ側から次々と更新情報をクライアントに送り出す<br />
「<strong><a href="http://apiwiki.twitter.com/Streaming-API-Documentation" target="_blank" title="Twitter API Wiki / Streaming API Documentation">Twitter Streaming API</a></strong>」というのがあります。<br />
<br />
通常のRESTを使ったプル型とは違って、<br />
サーバーからプッシュでリアルタイムにJSONが送られてくるので<br />
それをパースしてフロントを作っていきます。<br />
単位時間当たりのAPI利用回数制限の上限も気にしなくてよいです。<br />
<br />
<span id="more-367"></span><br />
プッシュなので<br />
APIと接続するところは<strong>Flash</strong>のSocketクラスを使って実装といきたいところですが<br />
サーバー側は考えずに手っ取り早い方法として<br />
以下の<strong>Javascript</strong>ライブラリを使ってみます。<br />
（JSとの連携はAS3.0のExternalInterface.addCallback()で）<br />
<br />
JavaScriptからTwitter Streaming APIを利用するためのライブラリ<br />
<a href="http://wiki.livedoor.jp/staff_reader/d/Streaming%20API/JavaScript" target="_blank" title="">http://wiki.livedoor.jp/staff_reader/d/Streaming%20API/JavaScript</a><br />
<br />
サンプルのjson_viewer.html内に<br />
LDReader.JSON.stringify(json)というストリームで流れてくるJSONデータがありますので<br />
ここでFlashの関数を呼び出してJSONを引数で渡します。<br />
あとは呼ばれる度にFlashでお好きなようにビジュアライズしてあげるだけ。<br />
<br />
で、今回作ったもの。<br />
「<strong>iPad</strong>」に関するタイムラインが流れてきます。<br />
<a href="http://blog.alt-scape.com/swf/twitter_stream_api/" target="_blank" title="Twitter Stream API Flashサンプル">http://blog.alt-scape.com/swf/twitter_stream_api/</a><br />
（いくら待ってもTLが流れてこない場合はブラウザの更新ボタンを押してみてください）<br />
<br />
サンプルの流れ<br />
１．Stream APIのJavasriptライブラリ使って情報が更新される度に毎回JS→Flashの関数をたたく。<br />
２．引数で渡ってきたJSONデータをcorelibを利用してパース。<br />
３．テキストを作成して下に向かって流す。<br />
４．ある程度表示したらremoveChildでメモリーリーク対策。<br />
<br />
</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alt-scape.com/archives/367/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GoogleMaps × Twitterのマッシュアップ（Flashサンプル）</title>
		<link>http://blog.alt-scape.com/archives/319</link>
		<comments>http://blog.alt-scape.com/archives/319#comments</comments>
		<pubDate>Thu, 14 May 2009 18:05:41 +0000</pubDate>
		<dc:creator>alt</dc:creator>
				<category><![CDATA[サンプル]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[マッシュアップ]]></category>

		<guid isPermaLink="false">http://blog.alt-scape.com/?p=319</guid>
		<description><![CDATA[


だいぶ前にTwitterのしょっぱいFlashサンプルを作ったのですが
ちゃんと形になるものを作ろうと思い、いろいろ調べながらやってみたのが
GoogleMapsとTwitterのマッシュアップコンテンツ。
ありが [...]]]></description>
			<content:encoded><![CDATA[<p>
<img src="http://blog.alt-scape.com/img/googlemap_twitter.jpg" alt="GoogleMap × Twitter" />
<br />
だいぶ前にTwitterの<a title="FlashでTwitterの発言を取得してみる" href="http://blog.alt-scape.com/archives/234" target="_blank">しょっぱいFlashサンプル</a>を作ったのですが<br />
ちゃんと形になるものを作ろうと思い、いろいろ調べながらやってみたのが<br />
<strong>GoogleMaps</strong>と<strong>Twitter</strong>のマッシュアップコンテンツ。<br />
ありがち？既出多そうですね。ｗ<br />
1日かかったくせにまだ所々抜けが多いけど、勢いに任せて作ってみました。<br />
<br />
<a title="Google Maps × Twitter" href="http://blog.alt-scape.com/swf/googlemap_twitter/" target="_blank"><strong>Google Maps × Twitter</strong></a><br />
<span style="color: #ff0000;">※2010/1/19追加　現在、Twittervision APIが使用できないためこのサンプルは動きません</span><br />
<span style="color: #ff0000;">※2010/1/28追加　Twittervision APIを取得しないでTwitter APIのみでジオコーディングを行うように変更しました。エラー分岐してないのでよく止まります。とりあえずの処置。</span><br />
<br />
注意）<br />
・住所がundefinedのものは表示しないので2秒おきに出たり出なかったり多少ばらつきがあります。<br />
・hetemlサーバーが不安定なのでやたら遅いときがあります。<br />
・Twitter APIへのリクエストは<strong>60分間に150回</strong>までしか実行できないので<br />
過度にアクセスした場合は制限を超えてるため、途中から表示しなくなります。<br />
<br />
<span id="more-319"></span><br />
ロジックは<br />
１）<a title="Twitter API" href="http://twitter.com/statuses/public_timeline.xml" target="_blank"><strong>Twitter API</strong></a>から最新の投稿20件を取得する。<br />
↓<br />
２）↓投稿順にスクリーンネームを取得し<strong>Twittervision API</strong>へリクエストする。（詳しくは<a title="Twittervision API" href="http://twittervision.com/api.html" target="_blank">ココ</a>）<br />
http://twittervision.com/user/current_status/スクリーンネーム.xml<br />
↓<br />
３）XMLに投稿者の位置情報（緯度、経度）をつけて返してくれるのでそれをもとにGoogleMapに表示させる。<br />
－＜location＞<br />
＜longitude type=&#8221;float&#8221;＞<strong>-122.007187</strong>＜/longitude＞<br />
＜latitude type=&#8221;float&#8221;＞<strong>38.044918</strong>＜/latitude＞<br />
＜address＞Q Area, USA＜/address&gt;＞<br />
＜/location＞<br />
↓<br />
４）2秒おきに２）から繰り返す。<br />
<br />
Twittervision APIで緯度経度を取得しなくても地名さえ分かればジオコーディングで緯度、経度を算出できます。<br />
<pre class="code"><span class="keyword">var</span> geocoder:ClientGeocoder = <span class="keyword">new</span> ClientGeocoder();<br />
geocoder.addEventListener(GeocodingEvent.GEOCODING_SUCCESS, handleGeocodingSuccess);<br />
geocoder.addEventListener(GeocodingEvent.GEOCODING_FAILURE, handleGeocodingFailure);<br />
geocoder.geocode(<span class="str">"投稿者の住所or地名"</span>);<br />
<span class="keyword">private</span> <span class="keyword">function</span> handleGeocodingSuccess(event:GeocodingEvent):<span class="keyword">void</span><br />
{<br />
　　<span class="keyword">var</span> placemarks:Array = event.response.placemarks;<br />
　　trace(placemarks[<span class="num">0</span>].point); <span class="rem">//緯度、経度</span><br />
}</pre>
<p style="line-height:170%">詳しくは<br />
<a title="ジオコーディング" href="http://code.google.com/apis/maps/documentation/flash/services.html#Geocoding" target="_blank">http://code.google.com/apis/maps/documentation/flash/services.html#Geocoding</a><br />
<br />
参考サイト<br />
<a title="twittervision" href="http://twittervision.com/" target="_blank">http://twittervision.com/</a><br />
<a title="twittervision 3D" href="http://twittervision.com/maps/show_3d" target="_blank">http://twittervision.com/maps/show_3d</a><br />
デモサンプル<br />
<a title="GoogleMaps DEMO" href="http://code.google.com/apis/maps/documentation/flash/demogallery.html" target="_blank">http://code.google.com/apis/maps/documentation/flash/demogallery.html</a><br />
Google Maps API for Flashドキュメント<br />
<a title="ドキュメント" href="http://code.google.com/intl/ja/apis/maps/documentation/flash/intro.html" target="_blank">http://code.google.com/intl/ja/apis/maps/documentation/flash/intro.html</a><br />
Twitter API 仕様書 (勝手に日本語訳シリーズ)<br />
<a title="Twitter API 仕様書 (勝手に日本語訳シリーズ)" href="http://watcher.moe-nifty.com/memo/2007/04/twitter_api.html" target="_blank">http://watcher.moe-nifty.com/memo/2007/04/twitter_api.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alt-scape.com/archives/319/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>はじめてのmixiアプリ</title>
		<link>http://blog.alt-scape.com/archives/314</link>
		<comments>http://blog.alt-scape.com/archives/314#comments</comments>
		<pubDate>Wed, 06 May 2009 16:42:42 +0000</pubDate>
		<dc:creator>alt</dc:creator>
				<category><![CDATA[メモ]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[mixiアプリ]]></category>
		<category><![CDATA[ソースコード]]></category>

		<guid isPermaLink="false">http://blog.alt-scape.com/?p=314</guid>
		<description><![CDATA[



先月、mixiプラットフォーム上に個人で開発したアプリを表示できる
「mixiアプリ」のオープンベータ版がスタートしました。
さらにmixiアプリを開発する法人・個人に対して、
出資や融資のほか、アプリケーション [...]]]></description>
			<content:encoded><![CDATA[<p>
<img src="http://blog.alt-scape.com/img/mixi1.jpg" alt="mixiアプリ" />
<br />
<br />
先月、mixiプラットフォーム上に個人で開発したアプリを表示できる<br />
「<strong>mixiアプリ</strong>」のオープンベータ版がスタートしました。<br />
さらにmixiアプリを開発する法人・個人に対して、<br />
出資や融資のほか、アプリケーションの買い取りといった方法で支援する「<strong>mixiファンド</strong>」の設立により<br />
iPhoneアプリやモゲラ、Cteamといったクリエイターへ対価を支払う支援プラットフォームとしても<br />
大変興味深い環境が形成されてきてこれから楽しみです。<br />
単純に考えても自分の作ったアプリが国内の1500万人ユーザーにアプローチできるのってすごいですね。<br />
<br />
<span id="more-314"></span><br />
まずお試しに何か作ってみたいと思います。<br />
以下、<a title="mixi Developer Center (ミクシィ デベロッパーセンター)" href="http://developer.mixi.co.jp" target="_blank">ココ</a> を参考にmixiアプリ作成手順と取得情報をメモ。<br />
<br />
１．<a title="mixiアプリオープンβコミュニティ" href="http://mixi.jp/view_community.pl?id=3217244" target="_blank"><strong>mixiアプリオープンβコミュニティ</strong></a>に参加登録する。<br />
<br />
２．<a title="mixiアプリオープンβ" href="http://platform001.mixi.jp/" target="_blank"><strong>mixiアプリオープンベータ版</strong></a>にアクセスして「アプリ」ってメニューを押す。<br />
<br />
３．一番右の「<strong>アプリを作成する</strong>」を押して「<strong>Developer登録</strong>」する。<br />
<br />
４．先ほどの「<strong>アプリを作成する</strong>」に戻ってアプリ名やカテゴリ、公開・非公開設定、ガジェットURL、説明文、写真、アイコン設定などの情報を入力して投稿。<br />
<br />
上記手順でmixiプロフィールの窓や画面一杯に展開する専用ページに表示することができます。<br />
肝心のアプリ（Flash）を表示するための書式として<strong>Gadget XML</strong>を記述しないといけませんが<br />
シンプルに書くとこんなかんじ。<br />
<pre class="code"><span class="tag">&lt;?xml version="1.0" encoding="UTF-8" ?&gt;</span><br />
　　<span class="tag">&lt;Module&gt;</span><br />
　　　　<span class="tag">&lt;ModulePrefs <span class="attr">title=</span><span class="value">"タイトル"</span>&gt;</span><br />
　　　　<span class="tag">&lt;Require <span class="attr">feature=</span><span class="value">"flash"</span> /&gt;</span><br />
　　<span class="tag">&lt;/ModulePrefs&gt;</span><br />
　　<span class="tag">&lt;Content <span class="attr">type=</span><span class="value">"html"</span>&gt;</span><span class="tag">&lt;![CDATA[<br />
<br />
　　　　&lt;div id="flashContent"&gt;</span><span class="tag">&lt;/div&gt;</span><br />
　　　　<span class="tag">&lt;script <span class="attr">type=</span><span class="value">"text/javascript"</span>&gt;</span><br />
　　　　gadgets.util.registerOnLoadHandler(function () {<br />
　　　　var element = document.getElementById("flashContent");<br />
　　　　var uri = "SWFのURL";<br />
　　　　gadgets.flash.embedFlash(uri, element, 9,<br />
　　　　{ width: 幅, height: 高さ ,id: "flashobject",<br />
　　　　allowScriptAccess: "always",<br />
　　　　allowNetworking: "all",<br />
　　　　wmode: "transparent" });<br />
　　　　<span class="tag">&lt;/script&gt;</span><br />
<br />
　　]]&gt;<span class="tag">&lt;/Content&gt;</span><br />
<span class="tag">&lt;/Module&gt;</span></pre>
<span style="color: #ff0000;">※allowScriptAccess : &#8220;always&#8221;を記述しないとSWFが表示されないのでご注意を！</span><br />
<br />
<p style="line-height:150%">swfが表示されない、JavascriptとFlashのやりとりができない、外部サービス呼び出しがおかしいなどの<br />
トラブルはこちらが参考になります。<br />
<a title="flashなmixiアプリ" href="http://mixi.jp/view_bbs.pl?id=41567209&amp;comm_id=3217244&amp;page=all" target="_blank">http://mixi.jp/view_bbs.pl?id=41567209&amp;comm_id=3217244&amp;page=all</a><br />
<a title="mixi アプリでflash を表示" href="http://mixiapp.rash.jp/wp/?p=72" target="_blank">http://mixiapp.rash.jp/wp/?p=72</a><br />
<br />
Flashからmixi opensocial JavaScript API にアクセスするライブラリ「flixi」（フリクシィ）もあるみたいです。<br />
<a title="flixi manual" href="http://www.serialgames.co.jp/~jun/mixi/flixi/index.html" target="_blank">http://www.serialgames.co.jp/~jun/mixi/flixi/index.html</a><br />
<br />
取得できるデータはこちら<br />
<a title="JavaScript API" href="http://developer.mixi.co.jp/appli/javascript-api" target="_blank">http://developer.mixi.co.jp/appli/javascript-api</a><br />
占いなんかは必須ですが、インストールユーザー・閲覧者のmixiプロフィール、マイミクシィ・コミュニティ一覧などなど。<br />
<br />
ガジェットサイズは横幅212px、縦幅は上限212pxとなってます。<br />
（※iFrameとして表示されるのでFlashサイズはそれ以上で作ってもいけそう。スクロールは出るけど。）<br />
アプリは最大3つまでしか登録できません。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alt-scape.com/archives/314/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>FlickrAPIクラス（Actionscript2.0）</title>
		<link>http://blog.alt-scape.com/archives/269</link>
		<comments>http://blog.alt-scape.com/archives/269#comments</comments>
		<pubDate>Wed, 07 Jan 2009 03:09:51 +0000</pubDate>
		<dc:creator>alt</dc:creator>
				<category><![CDATA[サンプル]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[AS2]]></category>
		<category><![CDATA[ソースコード]]></category>

		<guid isPermaLink="false">http://blog.alt-scape.com/?p=269</guid>
		<description><![CDATA[
ちょっと仕事で
Actionscript2.0でFlickrの画像を取得することをやったので
そのとき作ったクラスをアップします。

ソースを見ていただければ分かりますが、
クラスをnewするときの引数内だけ説明します。
var flickr:FlickrAPI = new FlickrAPI( &#8220;xxxxxxxxxx&#8220;, &#8220;cow&#8220;, 50, 1 );
第一引数： あなたのAPIアプリケーションキー
第二引数： 検索するときのタグ名
第三引数： 検索1回あたりの取得件数
第四引数： 出力ページ番号

RESTでリクエストするときはもっと細かい設定が可能ですが
基本、FlickrAPIクラス内で予め決めうちで設定しています。
というのも、今回クリエイティブコモンズのライセンスが付与された画像を引っ張るという
仕様で作ったのでそのまんまになってます。
もし変更したい場合はFlickrAPI.asを自由に改変しちゃってください。
こちら が参考になると思います。

demo &#124; download

APIアプリケーションキーの取得は　こちら
APIドキュメントは　こちら


FlickrAPI.as
/**
 * FlickrAPI
 * 
 * @alt
 * update '09/1/6
 * 
 */
 
import mx.utils.Delegate;
import mx.events.EventDispatcher;
import org.casaframework.load.data.xml.XmlLoad;
import org.casaframework.util.XmlUtil;


class com.alt.FlickrAPI extends MovieClip
{
    
    //--------------------------------------
    // 変数定義
    //--------------------------------------
  [...]]]></description>
			<content:encoded><![CDATA[<p>
ちょっと仕事で<br />
<strong>Actionscript2.0</strong>で<strong>Flickr</strong>の画像を取得することをやったので<br />
そのとき作ったクラスをアップします。<br />
<br />
ソースを見ていただければ分かりますが、<br />
クラスをnewするときの引数内だけ説明します。<br />
var flickr:FlickrAPI = new FlickrAPI( &#8220;<span style="color: #ff0000;">xxxxxxxxxx</span>&#8220;, &#8220;<span style="color: #ff0000;">cow</span>&#8220;, <span style="color: #ff0000;">50</span>, <span style="color: #ff0000;">1</span> );<br />
<strong>第一引数</strong>： あなたのAPIアプリケーションキー<br />
<strong>第二引数</strong>： 検索するときのタグ名<br />
<strong>第三引数</strong>： 検索1回あたりの取得件数<br />
<strong>第四引数</strong>： 出力ページ番号<br />
<br />
RESTでリクエストするときはもっと細かい設定が可能ですが<br />
基本、FlickrAPIクラス内で予め決めうちで設定しています。<br />
というのも、今回<strong>クリエイティブコモンズのライセンスが付与された画像</strong>を引っ張るという<br />
仕様で作ったのでそのまんまになってます。<br />
もし変更したい場合はFlickrAPI.asを自由に改変しちゃってください。<br />
<a href="http://itpro.nikkeibp.co.jp/article/COLUMN/20061101/252356/" target="_blank" title="第2回　JavaScriptからFlickr APIで画像検索">こちら</a> が参考になると思います。<br />
<br />
<a class="option" title="flickr api" rel="shadowbox;width=680;height=800" href="http://blog.alt-scape.com/swf/flickr_api.swf">demo</a> | <a href="http://blog.alt-scape.com/fla/flickr_api.zip">download</a><br />
<br />
APIアプリケーションキーの取得は　<a title="Flickr Services" href="http://www.flickr.com/services/api/keys/apply/" target="_blank">こちら</a><br />
APIドキュメントは　<a title="Flickr Services" href="http://www.flickr.com/services/api/" target="_blank">こちら</a><br />
<br />
<span id="more-269"></span><br />
<strong>FlickrAPI.as</strong><br />
<pre class="code"><span class="rem">/**<br />
 * FlickrAPI<br />
 * <br />
 * @alt<br />
 * update '09/1/6<br />
 * <br />
 */</span><br />
 <br />
<span class="keyword">import</span> mx.utils.Delegate;<br />
<span class="keyword">import</span> mx.events.EventDispatcher;<br />
<span class="keyword">import</span> org.casaframework.load.data.xml.XmlLoad;<br />
<span class="keyword">import</span> org.casaframework.util.XmlUtil;<br />
<br />
<br />
<span class="keyword">class</span> com.alt.FlickrAPI <span class="keyword">extends</span> <span class="keyword">MovieClip</span><br />
{<br />
    <br />
    <span class="rem">//--------------------------------------</span><br />
    <span class="rem">// 変数定義</span><br />
    <span class="rem">//--------------------------------------</span><br />
    <span class="keyword">public</span> <span class="keyword">var</span> addEventListener:Function;<br />
    <span class="keyword">public</span> <span class="keyword">var</span> removeEventListener:Function;<br />
    <span class="keyword">private</span> <span class="keyword">var</span> dispatchEvent:Function;<br />
    <br />
    <span class="keyword">private</span> <span class="keyword">var</span> xmlUrl:<span class="keyword">String</span>;<br />
    <span class="keyword">private</span> <span class="keyword">var</span> xmlLoad:XmlLoad;<br />
    <span class="keyword">public</span> <span class="keyword">var</span> xmlArray:Array;<br />
    <br />
    <span class="keyword">public</span> <span class="keyword">var</span> idArray:Array = <span class="keyword">new</span> Array();<br />
    <span class="keyword">public</span> <span class="keyword">var</span> ownerArray:Array = <span class="keyword">new</span> Array();<br />
    <span class="keyword">public</span> <span class="keyword">var</span> secretArray:Array = <span class="keyword">new</span> Array();<br />
    <span class="keyword">public</span> <span class="keyword">var</span> serverArray:Array = <span class="keyword">new</span> Array();<br />
    <span class="keyword">public</span> <span class="keyword">var</span> farmArray:Array = <span class="keyword">new</span> Array();<br />
    <span class="keyword">public</span> <span class="keyword">var</span> titleArray:Array = <span class="keyword">new</span> Array();<br />
    <span class="keyword">public</span> <span class="keyword">var</span> ispublicArray:Array = <span class="keyword">new</span> Array();<br />
    <span class="keyword">public</span> <span class="keyword">var</span> isfriendArray:Array = <span class="keyword">new</span> Array();<br />
    <span class="keyword">public</span> <span class="keyword">var</span> isfamilyArray:Array = <span class="keyword">new</span> Array();<br />
    <span class="keyword">public</span> <span class="keyword">var</span> imgArray:Array = <span class="keyword">new</span> Array();<br />
    <br />
    <span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">var</span> LOAD_COMPLETE:<span class="keyword">String</span> = <span class="str">&quot;onLoadComplete&quot;</span>;<br />
    <span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">var</span> LOAD_INIT:<span class="keyword">String</span> = <span class="str">&quot;onLoadInit&quot;</span>;<br />
    <span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">var</span> LOAD_ERROR:<span class="keyword">String</span> = <span class="str">&quot;onLoadError&quot;</span>;<br />
    <span class="keyword">private</span> <span class="keyword">var</span> OUTPUT:Boolean = <span class="keyword">false</span>; <span class="rem">//traceしない</span><br />
    <br />
    <br />
    <span class="rem">//--------------------------------------</span><br />
    <span class="rem">// コンストラクタ</span><br />
    <span class="rem">//--------------------------------------</span><br />
    <span class="keyword">public</span> <span class="keyword">function</span> FlickrAPI( apikey:<span class="keyword">String</span>, keyword:<span class="keyword">String</span>, per_page:<span class="keyword">Number</span>, page:<span class="keyword">Number</span> )<br />
    {<br />
        <span class="rem">//crossdomainの読み込み</span><br />
        System.security.loadPolicyFile(<span class="str">&quot;http://api.flickr.com/crossdomain.xml&quot;</span>);<br />
        System.security.loadPolicyFile(<span class="str">&quot;http://farm1.static.flickr.com/crossdomain.xml&quot;</span>);<br />
        System.security.loadPolicyFile(<span class="str">&quot;http://farm2.static.flickr.com/crossdomain.xml&quot;</span>);<br />
        System.security.loadPolicyFile(<span class="str">&quot;http://farm3.static.flickr.com/crossdomain.xml&quot;</span>);<br />
        System.security.loadPolicyFile(<span class="str">&quot;http://farm4.static.flickr.com/crossdomain.xml&quot;</span>);<br />
        <br />
        EventDispatcher.initialize(<span class="keyword">this</span>);<br />
        <br />
        loadXML( apikey, keyword, per_page, page );<br />
    }<br />
    <br />
    <br />
    <span class="rem">//--------------------------------------</span><br />
    <span class="rem">// XMLロード</span><br />
    <span class="rem">//--------------------------------------</span><br />
    <span class="keyword">private</span> <span class="keyword">function</span> loadXML( apikey:<span class="keyword">String</span>, keyword:<span class="keyword">String</span>, per_page:<span class="keyword">Number</span>, page:<span class="keyword">Number</span> ):Void<br />
    {<br />
        <br />
        xmlUrl = <span class="str">&quot;http://api.flickr.com/services/rest/?method=flickr.photos.search&quot;</span> + <br />
                                                                                        <br />
                                                                                        <span class="str">&quot;&amp;api_key=&quot;</span> + apikey + <br />
                                                                                        <span class="str">&quot;&amp;format=&quot;</span> + <span class="str">&quot;rest&quot;</span> + <br />
                                                                                        <span class="str">&quot;&amp;license=&quot;</span> + <span class="str">&quot;1,2,3,4,5,6&quot;</span> + <br />
                                                                                        <span class="str">&quot;&amp;sort=&quot;</span> + <span class="str">&quot;interestingness-desc&quot;</span> + <br />
                                                                                        <span class="str">&quot;&amp;extras=&quot;</span> + <span class="str">&quot;license,owner_name,o_dims,original_format&quot;</span> + <br />
                                                                                        <span class="str">&quot;&amp;tags=&quot;</span> + keyword + <span class="rem">//&amp;text= or &amp;tag=</span><br />
                                                                                        <span class="str">&quot;&amp;per_page=&quot;</span> + per_page + <br />
                                                                                        <span class="str">&quot;&amp;page=&quot;</span> + page;<br />
        <br />
        xmlLoad = <span class="keyword">new</span> XmlLoad(xmlUrl + getRandomQuery());<br />
        xmlLoad.addEventObserver(<span class="keyword">this</span>, XmlLoad.EVENT_LOAD_COMPLETE, <span class="str">'onXmlLoadComplete'</span>);<br />
        xmlLoad.addEventObserver(<span class="keyword">this</span>, XmlLoad.EVENT_LOAD_ERROR, <span class="str">&quot;onXmlLoadError&quot;</span>);<br />
        xmlLoad.start();<br />
        <br />
        <span class="keyword">if</span> (<span class="keyword">this</span>.OUTPUT)<br />
        {<br />
            trace(<span class="str">&quot;/----------------------------------&quot;</span>);<br />
            trace(<span class="str">&quot;Flick APIロード開始&quot;</span>);<br />
        }<br />
    }<br />
    <br />
    <br />
    <span class="rem">//--------------------------------------</span><br />
    <span class="rem">// XMLロード完了</span><br />
    <span class="rem">//--------------------------------------</span><br />
    <span class="keyword">private</span> <span class="keyword">function</span> onXmlLoadComplete():Void<br />
    {<br />
        <span class="keyword">if</span> (<span class="keyword">this</span>.OUTPUT)<br />
        {<br />
            trace(<span class="str">&quot;Flick APIロード完了&quot;</span>);<br />
            trace(<span class="str">&quot;----------------------------------/&quot;</span>);<br />
        }<br />
        <br />
        dispatchEvent( { type: FlickrAPI.LOAD_COMPLETE } );<br />
        xmlArray = XmlUtil.xmlToObject(xmlLoad.getXml())[<span class="str">'rsp'</span>][<span class="num">0</span>][<span class="str">'photos'</span>][<span class="num">0</span>][<span class="str">'photo'</span>];<br />
        initXML();<br />
    }<br />
    <br />
    <br />
    <span class="rem">//--------------------------------------</span><br />
    <span class="rem">// XMLロードエラー</span><br />
    <span class="rem">//--------------------------------------</span><br />
    <span class="keyword">function</span> onXmlLoadError():Void<br />
    {<br />
        <span class="keyword">if</span>(<span class="keyword">this</span>.OUTPUT)   trace(<span class="str">&quot;Flick APIロードエラー&quot;</span>);<br />
        dispatchEvent( { type: FlickrAPI.LOAD_ERROR } );<br />
    }<br />
    <br />
    <br />
    <span class="rem">//--------------------------------------</span><br />
    <span class="rem">// XML初期設定</span><br />
    <span class="rem">//--------------------------------------</span><br />
    <span class="keyword">private</span> <span class="keyword">function</span> initXML():Void<br />
    {<br />
        <span class="keyword">for</span>(<span class="keyword">var</span> i:<span class="keyword">Number</span> = <span class="num">0</span>; i&lt;xmlArray.length; i++)<br />
        {<br />
            idArray.push(xmlArray[i].id);<br />
            ownerArray.push(xmlArray[i].owner);<br />
            secretArray.push(xmlArray[i].secret);<br />
            serverArray.push(xmlArray[i].server);<br />
            farmArray.push(xmlArray[i].farm);<br />
            titleArray.push(xmlArray[i].title);<br />
            ispublicArray.push(xmlArray[i].ispublic); <span class="rem">//公開1非公開0</span><br />
            isfriendArray.push(xmlArray[i].isfriend);<br />
            isfamilyArray.push(xmlArray[i].isfamily);<br />
            <br />
            <span class="keyword">var</span> img:<span class="keyword">String</span> = <span class="str">&quot;http://farm&quot;</span> + farmArray[i] + <span class="str">&quot;.static.flickr.com/&quot;</span> + serverArray[i] + <span class="str">&quot;/&quot;</span> + idArray[i] + <span class="str">&quot;_&quot;</span> + secretArray[i] + <span class="str">&quot;_m.jpg&quot;</span>; <span class="rem">//_m.jpgは大きさを変更できる　&quot;s&quot;,&quot;t&quot;,&quot;m&quot;,&quot;-&quot;,&quot;b&quot;</span><br />
            imgArray.push(img);<br />
        }<br />
        <br />
        dispatchEvent( { type: FlickrAPI.LOAD_INIT } );<br />
    }<br />
    <br />
    <br />
    <span class="rem">//--------------------------------------</span><br />
    <span class="rem">// getter</span><br />
    <span class="rem">//--------------------------------------</span><br />
    <span class="keyword">public</span> <span class="keyword">function</span> <span class="keyword">get</span> id():Array { <span class="keyword">return</span> idArray; }<br />
    <span class="keyword">public</span> <span class="keyword">function</span> <span class="keyword">get</span> owner():Array { <span class="keyword">return</span> ownerArray; }<br />
    <span class="keyword">public</span> <span class="keyword">function</span> <span class="keyword">get</span> secret():Array { <span class="keyword">return</span> secretArray; }<br />
    <span class="keyword">public</span> <span class="keyword">function</span> <span class="keyword">get</span> server():Array { <span class="keyword">return</span> serverArray; }<br />
    <span class="keyword">public</span> <span class="keyword">function</span> <span class="keyword">get</span> farm():Array { <span class="keyword">return</span> farmArray; }<br />
    <span class="keyword">public</span> <span class="keyword">function</span> <span class="keyword">get</span> title():Array { <span class="keyword">return</span> titleArray; }<br />
    <span class="keyword">public</span> <span class="keyword">function</span> <span class="keyword">get</span> ispublic():Array { <span class="keyword">return</span> ispublicArray; }<br />
    <span class="keyword">public</span> <span class="keyword">function</span> <span class="keyword">get</span> isfriend():Array { <span class="keyword">return</span> isfriendArray; }<br />
    <span class="keyword">public</span> <span class="keyword">function</span> <span class="keyword">get</span> isfamily():Array { <span class="keyword">return</span> isfamilyArray; }<br />
    <span class="keyword">public</span> <span class="keyword">function</span> <span class="keyword">get</span> img():Array { <span class="keyword">return</span> imgArray; }<br />
    <br />
    <br />
    <span class="rem">//--------------------------------------</span><br />
    <span class="rem">// キャッシュクリア用</span><br />
    <span class="rem">//--------------------------------------</span><br />
    <span class="keyword">private</span> <span class="keyword">function</span> getRandomQuery():<span class="keyword">String</span><br />
    {<br />
        <span class="keyword">var</span> myDate:Date = <span class="keyword">new</span> Date();<br />
        <span class="keyword">return</span> (<span class="keyword">_root</span>._url.substr(<span class="num">0</span>, <span class="num">5</span>) == <span class="str">&quot;http:&quot;</span> || <span class="keyword">_root</span>._url.substr(<span class="num">0</span>, <span class="num">6</span>) == <span class="str">&quot;https:&quot;</span>) ? <span class="str">&quot;?&quot;</span> + <span class="keyword">String</span>(myDate.getTime()) : <span class="str">&quot;&quot;</span>;<br />
    }<br />
}<br />
</pre>
<br />
<br />
<strong>.flaのフレームアクション</strong><br />
<pre class="code"><span class="rem">//----------------------------------</span><br />
<span class="rem">//  import</span><br />
<span class="rem">//----------------------------------</span><br />
<span class="keyword">import</span> flash.display.BitmapData;<br />
<span class="keyword">import</span> com.alt.FlickrAPI;<br />
<br />
<br />
<span class="rem">//----------------------------------</span><br />
<span class="rem">//  変数定義</span><br />
<span class="rem">//----------------------------------</span><br />
<span class="keyword">var</span> flickr:FlickrAPI = <span class="keyword">new</span> FlickrAPI( <span class="str">&quot;xxxxxxxxxx&quot;</span>, <span class="str">&quot;cow&quot;</span>, <span class="num">50</span>, <span class="num">1</span> );<br />
<span class="rem">//（ あなたのAPIアプリケーションキー, 検索するときのタグ名, 検索1回あたりの取得件数, 出力ページ番号 ）</span><br />
<span class="keyword">var</span> image_mcl:MovieClipLoader = <span class="keyword">new</span> MovieClipLoader();<br />
<span class="keyword">var</span> mclListener:Object = { }; <span class="rem">//画像読み込みのリスナー</span><br />
<br />
<br />
<span class="rem">//----------------------------------</span><br />
<span class="rem">//  参照</span><br />
<span class="rem">//----------------------------------</span><br />
<span class="keyword">var</span> _this:<span class="keyword">MovieClip</span> = <span class="keyword">this</span>;<br />
<br />
<br />
<span class="rem">//----------------------------------</span><br />
<span class="rem">//  関数定義</span><br />
<span class="rem">//----------------------------------</span><br />
<span class="keyword">function</span> onLoadCompleteHandler():Void<br />
{<br />
    <span class="rem">//trace(&quot;complete&quot;);</span><br />
}<br />
<span class="keyword">function</span> onLoadInitHandler():Void<br />
{<br />
    <span class="rem">//flickr.img[i]   //画像のurl</span><br />
    <br />
    <span class="keyword">for</span> (<span class="keyword">var</span> i:<span class="keyword">Number</span>=<span class="num">0</span>; i &lt; flickr.img.length; i++)<br />
    {<br />
        <span class="keyword">var</span> mc:<span class="keyword">MovieClip</span> = _this[<span class="str">&quot;image&quot;</span> + i + <span class="str">&quot;_mc&quot;</span>];<br />
        image_mcl.addListener(mclListener);<br />
        image_mcl.loadClip(flickr.img[i], mc);<br />
    }<br />
}<br />
<span class="keyword">function</span> onLoadErrorHandler():Void<br />
{<br />
    <span class="rem">//trace(&quot;error&quot;);</span><br />
}<br />
<br />
<br />
<span class="rem">//----------------------------------</span><br />
<span class="rem">//  初期設定</span><br />
<span class="rem">//----------------------------------</span><br />
Stage.scaleMode =<span class="str">&quot;noScale&quot;</span>;<br />
Stage.align = <span class="str">&quot;TL&quot;</span>;<br />
<br />
<span class="rem">//画像コンテナ配置</span><br />
<span class="keyword">for</span> (<span class="keyword">var</span> i:<span class="keyword">Number</span>=<span class="num">0</span>; i &lt; <span class="num">40</span>; i++)<br />
{<br />
    <span class="keyword">var</span> mc:<span class="keyword">MovieClip</span> = _this.createEmptyMovieClip(<span class="str">&quot;image&quot;</span> + i + <span class="str">&quot;_mc&quot;</span>, <span class="keyword">this</span>.getNextHighestDepth());<br />
    mc._x = <span class="num">110</span> * (i % <span class="num">5</span>);<br />
    mc._y = <span class="num">110</span> * Math.floor(i / <span class="num">5</span>);<br />
}<br />
<br />
<span class="rem">//Flickr</span><br />
flickr.addEventListener(FlickrAPI.LOAD_INIT, onLoadInitHandler);<br />
flickr.addEventListener(FlickrAPI.LOAD_COMPLETE, onLoadCompleteHandler);<br />
flickr.addEventListener(FlickrAPI.LOAD_ERROR, onLoadErrorHandler);<br />
mclListener.onLoadStart = <span class="keyword">function</span>(target:<span class="keyword">MovieClip</span>):Void<br />
{<br />
};<br />
mclListener.onLoadComplete = <span class="keyword">function</span>(target:<span class="keyword">MovieClip</span>):Void<br />
{<br />
};<br />
mclListener.onLoadInit = <span class="keyword">function</span>(target:<span class="keyword">MovieClip</span>):Void<br />
{<br />
    target._width = <span class="num">100</span>;<br />
    target._height = <span class="num">100</span>;<br />
};</pre>
<br />
</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alt-scape.com/archives/269/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FlashでTwitterの発言を取得してみる</title>
		<link>http://blog.alt-scape.com/archives/234</link>
		<comments>http://blog.alt-scape.com/archives/234#comments</comments>
		<pubDate>Mon, 01 Dec 2008 06:56:15 +0000</pubDate>
		<dc:creator>alt</dc:creator>
				<category><![CDATA[サンプル]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[マッシュアップ]]></category>

		<guid isPermaLink="false">http://blog.alt-scape.com/?p=234</guid>
		<description><![CDATA[


世界最大のつぶやき共有サービス「Twitter」での発言を取得してみるテスト。
APIが公開されているのですが、
今回はTwitterユーザー全員の発言情報を5秒おきに最新10件表示するというものを作ってみました。 [...]]]></description>
			<content:encoded><![CDATA[<p>
<a rel="shadowbox;width=800;height=600" class="option" title="twitter1" href="http://blog.alt-scape.com/swf/twitter1.swf"><img src="http://blog.alt-scape.com/img/twitter1.jpg" border="0" width="550" height="338" /></a><br />
<br />
世界最大のつぶやき共有サービス「<a href="http://twitter.com/" target="_blank" title="Twitter"><strong>Twitter</strong></a>」での発言を取得してみるテスト。<br />
APIが公開されているのですが、<br />
今回はTwitterユーザー全員の発言情報を5秒おきに最新10件表示するというものを作ってみました。<br />
読み込みのフォーマットは<strong>XML</strong>、<strong>JSON</strong>、<strong>RSS</strong>、<strong>Atom</strong>のフォーマットで情報を使うことができます。<br />
今回はXMLで読み込みます。以下、API仕様をざっくりと書きました。<br />
<br />
<span id="more-234"></span><br />
<strong>Twitterユーザー全員の発言情報</strong>（最新20件）<br />
http://twitter.com/statuses/public_timeline.xml<br />
<br />
<strong>友達の発言情報</strong>（最新20件）<br />
http://twitter.com/statuses/friends_timeline/自分のユーザーネーム か IDナンバー.xml<br />
<br />
<strong>自分の発言情報</strong>（最新20件）<br />
http://twitter.com/statuses/user_timeline/自分のユーザーネーム か IDナンバー.xml<br />
<br />
<strong>自分の友達のリスト情報</strong><br />
http://twitter.com/statuses/friends/自分のユーザーネーム か IDナンバー.xml<br />
<br />
<strong>followしてくれているユーザーリスト情報</strong><br />
http://twitter.com/statuses/followers/自分のユーザーネーム か IDナンバー.xml<br />
<br />
<br />
Twitterもクロスドメインポリシーの関係でFlashからはAPIに接続できないのでPHP経由で取得してきます。<br />
<a href="http://yoppa.org/blog/366.html" target="_blank" title="Flash(AS3)でcrossdomain.xml無しにクロスドメインにアクセスする">こちら</a> のPHPソースを参考にして<br />
<pre class="code"><span class="keyword">var</span> xmlURL:<span class="keyword">String</span> = <span class="str">&quot;crossdomain-proxy.php?url=http://twitter.com/statuses/public_timeline.xml&quot;</span>;<br />
xmlLoader = <span class="keyword">new</span> URLLoader();<br />
xmlLoader.load(<span class="keyword">new</span> URLRequest(xmlURL));</pre>
<br />
のように取得すればＯＫです。<br />
<br />
<br />
【2009/9/15追記】<br />
<a href="http://blog.alt-scape.com/fla/twitter_sample.zip">ソース</a>をアップしました。<br />
<br />
</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alt-scape.com/archives/234/feed</wfw:commentRss>
		<slash:comments>35</slash:comments>
		</item>
		<item>
		<title>Flash CS3でGoogle Maps APIを利用してみる</title>
		<link>http://blog.alt-scape.com/archives/231</link>
		<comments>http://blog.alt-scape.com/archives/231#comments</comments>
		<pubDate>Wed, 26 Nov 2008 16:35:18 +0000</pubDate>
		<dc:creator>alt</dc:creator>
				<category><![CDATA[サンプル]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[ソースコード]]></category>

		<guid isPermaLink="false">http://blog.alt-scape.com/?p=231</guid>
		<description><![CDATA[


Google Mapコンポーネントで簡単にFlashでも地図を扱うことができるので今回は表示部分だけやってみました。
で、CS3で作る際にまず準備として

１．APIキー取得
http://code.google. [...]]]></description>
			<content:encoded><![CDATA[<p>
<a rel="shadowbox;width=550;height=400" class="option" title="googlemap1" href="http://blog.alt-scape.com/swf/googlemap1.swf"><img src="http://blog.alt-scape.com/img/googlemap1a.jpg" border="0" /></a><br />
<br />
<strong>Google Map</strong>コンポーネントで簡単にFlashでも地図を扱うことができるので今回は表示部分だけやってみました。<br />
で、CS3で作る際にまず準備として<br />
<br />
<strong>１．APIキー取得</strong><br />
<a href="http://code.google.com/apis/maps/signup.html" target="_blank" title="APIキー取得">http://code.google.com/apis/maps/signup.html</a><br />
<br />
<strong>２．SDK（swcファイル）をダウンロード</strong><br />
<a href="http://code.google.com/apis/maps/documentation/flash/" target="_blank" title="Google Maps API for Flash">http://code.google.com/apis/maps/documentation/flash/</a><br />
<br />
解凍して中のswcファイル（最新はmap_1_8a.swc）を<br />
C:\Program Files\Adobe\Adobe Flash CS3\ja\Configuration\Components<br />
にGoogleフォルダを作って中に格納します。<br />
CS3を起動すると、コンポーネントパネルにGoogleMapsConponentが入っているのが分かります。<br />
それをライブラリにドラッグするだけで準備ＯＫ！<br />
1.6以前の古いバージョンは <a href="http://groups.google.com/group/google-maps-api-for-flash/files" target="_blank" title="1.6以前の古いバージョン">ここ</a> にあります。<br />
mxpファイルが入っていればダブルクリックで簡単にインストールできますね。<br />
<br />
こちらのページが大変参考になりました！<br />
<a href="http://1ka2ka.com/archives/200808/24_005443.html" target="_blank" title="CS3 版の Google Maps API for Flash でいろいろ遊んでみる">http://1ka2ka.com/archives/200808/24_005443.html</a><br />
<br />
<span id="more-231"></span><br />
<strong>３．ステージに地図表示</strong><br />
あとは以下を参考にクラスをインポートしていくつかnewするだけで地図が表示できますよ。<br />
リファレンスやチュートリアルを見れば分かりやすく書いてあります。<br />
<br />
<strong>リファレンス</strong><br />
<a href="http://code.google.com/apis/maps/documentation/flash/reference.html" target="_blank" title="リファレンス">http://code.google.com/apis/maps/documentation/flash/reference.html</a><br />
<strong>チュートリアル</strong><br />
<a href="http://code.google.com/apis/maps/documentation/flash/tutorial-flash.html" target="_blank" title="チュートリアル">http://code.google.com/apis/maps/documentation/flash/tutorial-flash.html</a><br />
<strong>デモギャラリー</strong><br />
<a href="http://code.google.com/apis/maps/documentation/flash/demogallery.html" target="_blank" title="デモギャラリー">http://code.google.com/apis/maps/documentation/flash/demogallery.html</a><br />
<strong>サンプル</strong><br />
<a href="http://code.google.com/apis/maps/documentation/flash/examples/index.html" target="_blank" title="サンプル">http://code.google.com/apis/maps/documentation/flash/examples/index.html</a><br />
<br />
<strong>４．追加オプション</strong><br />
拡大比率、経度緯度、地図タイプ等を設定するだけで表示はすぐ出来ちゃいます。<br />
その他、地図上にアイコンや線を描くことができるので<br />
東京タワーと六本木ヒルズにアイコンを設置して線で結んでみました。<br />
さらに直線以外に道路に沿って細かい線を引くこともできます。<br />
以下のエンコードユーティリティツールで手動で設定した東京タワー周辺のポイント座標をエンコードして<br />
赤枠で囲んだ<strong>Encoded Polyline</strong>と<strong>Encoded Levels</strong>を<strong>EncodedPolylineData</strong>の引数に入れてやることで表示できました。<br />
<br />
<img src="http://blog.alt-scape.com/img/googlemap1b.jpg" border="0" />
<br />
<strong>エンコードユーティリティ</strong><br />
<a href="http://code.google.com/apis/maps/documentation/polylineutility.html" target="_blank" title="エンコードユーティリティ">http://code.google.com/apis/maps/documentation/polylineutility.html</a><br />
<strong>エンコードアルゴリズム</strong><br />
<a href="http://code.google.com/apis/maps/documentation/polylinealgorithm.html" target="_blank" title="エンコードアルゴリズム">http://code.google.com/apis/maps/documentation/polylinealgorithm.html</a><br />
<br />
<br />
ソースは<br />
<pre class="code"><span class="keyword">package</span><br />
{<br />
    <span class="keyword">import</span> flash.display.<span class="keyword">MovieClip</span>;<br />
    <span class="keyword">import</span> flash.display.Stage;<br />
    <span class="keyword">import</span> flash.display.StageAlign;<br />
    <span class="keyword">import</span> flash.display.StageScaleMode;<br />
    <span class="keyword">import</span> flash.geom.Point;<br />
    <span class="keyword">import</span> flash.events.Event;<br />
    <span class="keyword">import</span> flash.events.MouseEvent;<br />
    <span class="keyword">import</span> com.google.maps.controls.OverviewMapControl;<br />
    <span class="keyword">import</span> com.google.maps.MapEvent;<br />
    <span class="keyword">import</span> com.google.maps.MapMouseEvent;<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.LatLng;<br />
    <span class="keyword">import</span> com.google.maps.LatLngBounds;<br />
    <span class="keyword">import</span> com.google.maps.ProjectionBase;<br />
    <span class="keyword">import</span> com.google.maps.interfaces.IProjection;<br />
    <span class="keyword">import</span> com.google.maps.interfaces.IMapType;<br />
    <span class="keyword">import</span> com.google.maps.controls.MapTypeControl;<br />
    <span class="keyword">import</span> com.google.maps.controls.ZoomControl;<br />
    <span class="keyword">import</span> com.google.maps.controls.PositionControl;<br />
    <span class="keyword">import</span> com.google.maps.overlays.Marker;<br />
    <span class="keyword">import</span> com.google.maps.overlays.MarkerOptions;<br />
    <span class="keyword">import</span> com.google.maps.styles.StrokeStyle;<br />
    <span class="keyword">import</span> com.google.maps.styles.FillStyle;<br />
    <span class="keyword">import</span> com.google.maps.overlays.Polyline;<br />
    <span class="keyword">import</span> com.google.maps.overlays.PolylineOptions;<br />
    <span class="keyword">import</span> com.google.maps.overlays.EncodedPolylineData;<br />
    <br />
    <span class="keyword">public</span> <span class="keyword">class</span> GoogleMap1 <span class="keyword">extends</span> <span class="keyword">MovieClip</span><br />
    {<br />
        <span class="keyword">private</span> <span class="keyword">const</span> API_KEY:<span class="keyword">String</span> = <span class="str">&quot;あなたのAPIキー&quot;</span>; <span class="rem">//APIキー</span><br />
        <span class="keyword">private</span> <span class="keyword">var</span> container:<span class="keyword">MovieClip</span>;<br />
        <span class="keyword">private</span> <span class="keyword">var</span> map:Map;<br />
        <br />
        <span class="keyword">public</span> <span class="keyword">function</span> GoogleMap1()<br />
        {<br />
            initMap();<br />
        }<br />
        <br />
        <span class="keyword">private</span> <span class="keyword">function</span> initMap():<span class="keyword">void</span><br />
        {<br />
            <span class="rem">//コンテナ作成</span><br />
            container = <span class="keyword">new</span> <span class="keyword">MovieClip</span>();<br />
            container.x = container.y = <span class="num">0</span>;<br />
            addChild(container);<br />
            <br />
            <span class="rem">//Google MAP 作成</span><br />
            map = <span class="keyword">new</span> Map();<br />
            map.key = API_KEY; <span class="rem">//APIキー</span><br />
            map.language = <span class="str">&quot;ja&quot;</span>; <span class="rem">//言語</span><br />
            map.setSize(<span class="keyword">new</span> Point(stage.stageWidth, stage.stageHeight));    <span class="rem">//地図サイズ設定</span><br />
            map.addControl(<span class="keyword">new</span> PositionControl()); <span class="rem">//ポジションキーボタン</span><br />
            map.addControl(<span class="keyword">new</span> ZoomControl()); <span class="rem">//拡大縮小スライダー</span><br />
            map.addControl(<span class="keyword">new</span> MapTypeControl()); <span class="rem">//地図タイプセレクトボタン</span><br />
            map.addControl(<span class="keyword">new</span> OverviewMapControl()); <span class="rem">//右下オーバービューコントローラー</span><br />
            map.addEventListener(MapEvent.MAP_READY, onMapReady, <span class="keyword">false</span>, <span class="num">0</span>, <span class="keyword">true</span>); <span class="rem">//イベント設定</span><br />
            container.addChild(map);<br />
        }<br />
        <br />
        <span class="rem">//地図生成完了イベント</span><br />
        <span class="keyword">private</span> <span class="keyword">function</span> onMapReady(e:MapEvent):<span class="keyword">void</span><br />
        {<br />
            map.removeEventListener(MapEvent.MAP_READY, onMapReady);<br />
            <br />
            <span class="rem">//初期表示設定</span><br />
            map.enableScrollWheelZoom(); <span class="rem">//マウスホイールで拡大縮小できる</span><br />
            map.enableContinuousZoom(); <span class="rem">//スムースな拡大縮小ができる</span><br />
            <br />
            <span class="rem">//座標セット</span><br />
            map.setCenter(<br />
                                <span class="keyword">new</span> LatLng(<span class="num">35.6586317</span>, <span class="num">139.7454109</span>), <span class="rem">//座標</span><br />
                                <span class="num">14</span>, <span class="rem">//拡大率</span><br />
                                MapType.NORMAL_MAP_TYPE <span class="rem">//地図タイプ</span><br />
            );<br />
            <br />
            <span class="rem">//マーカー追加</span><br />
            addMarkers();<br />
            <br />
            <span class="rem">//直線ラインを引く</span><br />
            addDrawLine();<br />
            <br />
            <span class="rem">//地図ラインを引く</span><br />
            addMapLine();<br />
            <br />
            <span class="rem">//ステージ設定</span><br />
            initStage();<br />
        }<br />
        <br />
        <span class="rem">//マーカー配置</span><br />
        <span class="keyword">private</span> <span class="keyword">function</span> addMarkers():<span class="keyword">void</span><br />
        {<br />
            <span class="rem">//マーカー1設定</span><br />
            <span class="keyword">var</span> marker1:Marker = <span class="keyword">new</span> Marker(<br />
                        <span class="keyword">new</span> LatLng(<span class="num">35.6586317</span>, <span class="num">139.7454109</span>),<br />
                        <span class="keyword">new</span> MarkerOptions({strokeStyle: <span class="keyword">new</span> StrokeStyle({color: <span class="num">0</span>xFF0000}), fillStyle: <span class="keyword">new</span> FillStyle({color: <span class="num">0</span>xFFFFFF, alpha: <span class="num">1</span>}), radius:<span class="num">10</span>, hasShadow:<span class="keyword">true</span>})<br />
            );<br />
            marker1.addEventListener(MapMouseEvent.CLICK, clicked, <span class="keyword">false</span>, <span class="num">1</span>, <span class="keyword">true</span>);<br />
            <br />
            <span class="rem">//マーカー2設定</span><br />
            <span class="keyword">var</span> marker2:Marker = <span class="keyword">new</span> Marker(<br />
                        <span class="keyword">new</span> LatLng(<span class="num">35.6602616</span>, <span class="num">139.7295483</span>)<br />
            );<br />
            marker2.addEventListener(MapMouseEvent.CLICK, clicked, <span class="keyword">false</span>, <span class="num">1</span>, <span class="keyword">true</span>);<br />
            <br />
            <span class="rem">//マーカー配置</span><br />
            map.addOverlay(marker1);<br />
            map.addOverlay(marker2);<br />
        }<br />
        <br />
        <span class="rem">//マーカークリックイベント</span><br />
        <span class="keyword">private</span> <span class="keyword">function</span> clicked(event:MapMouseEvent):<span class="keyword">void</span><br />
        {<br />
            map.panTo(event.target.getLatLng()); <span class="rem">//マーカー座標へ移動</span><br />
        }<br />
        <br />
        <br />
        <span class="rem">//直線ラインを引く</span><br />
        <span class="keyword">private</span> <span class="keyword">function</span> addDrawLine():<span class="keyword">void</span><br />
        {<br />
            <span class="rem">// Polyline overlay.</span><br />
            <span class="keyword">var</span> polyline:Polyline = <span class="keyword">new</span> Polyline([<br />
                    <span class="keyword">new</span> LatLng(<span class="num">35.6586317</span>, <span class="num">139.7454109</span>),<br />
                    <span class="keyword">new</span> LatLng(<span class="num">35.6602616</span>, <span class="num">139.7295483</span>)<br />
                    ], <span class="keyword">new</span> PolylineOptions({ strokeStyle: <span class="keyword">new</span> StrokeStyle({<br />
                    color: <span class="num">0</span>xFF0000,<br />
                    thickness: <span class="num">4</span>,<br />
                    alpha: <span class="num">0.7</span>})<br />
            }));<br />
            map.addOverlay(polyline);<br />
        }<br />
        <br />
        <br />
        <span class="rem">//地図に沿ったラインを引く</span><br />
        <span class="keyword">private</span> <span class="keyword">function</span> addMapLine():<span class="keyword">void</span><br />
        {<br />
            <span class="rem">// エンコードされた座標値</span><br />
            <span class="keyword">var</span> encodedPoints:<span class="keyword">String</span> = <span class="str">&quot;kqsxE{_}sYiAm@kCbHk@`E|An@fNuFpJqEcCwB??{DOwEbAiByAy@vC&quot;</span><br />
            <br />
            <span class="rem">// エンコードされたズームレベル値</span><br />
            <span class="keyword">var</span> encodedLevels:<span class="keyword">String</span> = <span class="str">&quot;BBBBBBBBBBBBB&quot;</span>;<br />
<br />
            <br />
            <span class="keyword">var</span> encodedPolyline:Polyline = Polyline.fromEncoded(<br />
                <span class="keyword">new</span> EncodedPolylineData(<br />
                                        encodedPoints, <span class="rem">// エンコードされた座標値</span><br />
                                        <span class="num">32</span>, <span class="rem">// 線の描画精度</span><br />
                                        encodedLevels, <span class="rem">// エンコードされたレベル</span><br />
                                        <span class="num">4</span><br />
                ), <br />
                <span class="keyword">new</span> PolylineOptions({ strokeStyle: <span class="keyword">new</span> StrokeStyle({<br />
                                        color: <span class="num">0</span>x00FF00, <span class="rem">// 線の色</span><br />
                                        thickness: <span class="num">10</span>, <span class="rem">// 線の太さ</span><br />
                                        alpha: <span class="num">0.5</span> <span class="rem">// 線の透明度</span><br />
                })<br />
            }));<br />
            map.addOverlay(encodedPolyline);<br />
        }<br />
        <br />
        <br />
        <span class="rem">//ステージ設定</span><br />
        <span class="keyword">private</span> <span class="keyword">function</span> initStage():<span class="keyword">void</span><br />
        {<br />
            stage.showDefaultContextMenu = <span class="keyword">false</span>;<br />
            stage.scaleMode = StageScaleMode.NO_SCALE;<br />
            stage.align = StageAlign.TOP_LEFT;<br />
            stage.addEventListener(Event.RESIZE, stageResizeListener);<br />
            stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveListener, <span class="keyword">true</span>);<br />
            <br />
            map.setSize(<span class="keyword">new</span> Point(stage.stageWidth, stage.stageHeight));<br />
        }<br />
        <br />
        <span class="rem">//マウス移動イベント</span><br />
        <span class="keyword">private</span> <span class="keyword">function</span> mouseMoveListener(e:MouseEvent):<span class="keyword">void</span><br />
        {<br />
            <span class="rem">//マウスの座標取得</span><br />
            <span class="keyword">var</span> nowLL:LatLng = map.fromViewportToLatLng(<span class="keyword">new</span> Point(mouseX, mouseY));<br />
            <span class="rem">//trace(nowLL.lat()+&quot; , &quot;+nowLL.lng());</span><br />
        }<br />
        <br />
        <span class="rem">//ステージリサイズイベント</span><br />
        <span class="keyword">private</span> <span class="keyword">function</span> stageResizeListener(e:Event):<span class="keyword">void</span><br />
        {<br />
            map.setSize(<span class="keyword">new</span> Point(stage.stageWidth, stage.stageHeight));<br />
        }<br />
    }<br />
}</pre>
</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alt-scape.com/archives/231/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Flickrの画像を取得してPapervision3Dで動かす</title>
		<link>http://blog.alt-scape.com/archives/230</link>
		<comments>http://blog.alt-scape.com/archives/230#comments</comments>
		<pubDate>Tue, 25 Nov 2008 16:55:16 +0000</pubDate>
		<dc:creator>alt</dc:creator>
				<category><![CDATA[サンプル]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Papervision3D]]></category>
		<category><![CDATA[フルスクリーン]]></category>
		<category><![CDATA[マッシュアップ]]></category>

		<guid isPermaLink="false">http://blog.alt-scape.com/?p=230</guid>
		<description><![CDATA[



FlickrのAPIより画像を取得してPapervision3Dライブラリで3D上に配置するサンプルを作ってみました。
使用したライブラリは
tweener
papervision3D（ver1.7）
as3fl [...]]]></description>
			<content:encoded><![CDATA[<p>
<img src="http://blog.alt-scape.com/img/papervision3d_flickr1.jpg" border="0" alt="Flickrの画像を取得してPapervision3Dで動かす" />
<br />
<br />
<strong>Flickr</strong>のAPIより画像を取得して<strong>Papervision3D</strong>ライブラリで3D上に配置するサンプルを作ってみました。<br />
使用したライブラリは<br />
<a href="http://code.google.com/p/tweener/" target="_blank" title="tweener">tweener</a><br />
<a href="http://code.google.com/p/papervision3d/" target="_blank" title="papervision3d">papervision3D</a>（ver1.7）<br />
<a href="http://code.google.com/p/as3flickrlib/" target="_blank" title="as3flickrlib">as3flickrlib</a><br />
です。<br />
<br />
<span id="more-230"></span><br />
注意事項として、<br />
BitmapFileMaterialでFlickrなどの外部サーバの画像を表示するときに<br />
ローカルでは問題なく表示できているのにサーバーにアップすると表示できない現象があります。<br />
これは以下のサンドボックス制限によるものです。<br />
<em><strong>表示リスト内の移動</strong><br />
「SWF ファイルから他のサンドボックスからロードされた表示オブジェクトにアクセスする機能は制限されます。SWF ファイルが別のサンドボックス内にある別の SWF ファイルによって作成された表示オブジェクトにアクセスするには、アクセスされる側の SWF ファイルが Security.allowDomain() メソッドを呼び出し、アクセスする側の SWF ファイルのドメインによるアクセスを許可する必要があります。詳細については、作成者 (開発者) コントロールを参照してください。<br />
Loader オブジェクトでロードされた Bitmap オブジェクトにアクセスするには、クロスドメインポリシーファイルはイメージファイルのオリジンサーバー上に存在する必要があり、そのクロスドメインポリシーファイルは、SWF ファイルのドメインに、Bitmap オブジェクトへのアクセスを試みる許可を付与する必要があります。」</em><br />
<a href="http://livedocs.adobe.com/flash/9.0_jp/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&#038;file=00000354.html" target="_blank" title="クロススクリプト">Flash Player セキュリティ > クロススクリプト引用</a><br />
<br />
これを回避するために、頭に以下を記述します。<br />
<pre class="code">Security.loadPolicyFile(<span class="str">&quot;http://api.flickr.com/crossdomain.xml&quot;</span>);<br />
Security.loadPolicyFile(<span class="str">&quot;http://farm1.static.flickr.com/crossdomain.xml&quot;</span>);<br />
Security.loadPolicyFile(<span class="str">&quot;http://farm2.static.flickr.com/crossdomain.xml&quot;</span>);<br />
Security.loadPolicyFile(<span class="str">&quot;http://farm3.static.flickr.com/crossdomain.xml&quot;</span>);<br />
Security.loadPolicyFile(<span class="str">&quot;http://farm4.static.flickr.com/crossdomain.xml&quot;</span>);</pre>
<br />
あと、フルスクリーン表示も簡単にできます。<br />
<pre class="code">btn.addEventListener(MouseEvent.CLICK, <span class="keyword">function</span>(e:MouseEvent):<span class="keyword">void</span>{<br />
        toggleFullScreen();<br />
});<br />
<span class="keyword">function</span> toggleFullScreen():<span class="keyword">void</span><br />
{<br />
    <span class="keyword">if</span>(stage.displayState == StageDisplayState.NORMAL)<br />
    {<br />
        stage.displayState = StageDisplayState.FULL_SCREEN;<br />
    }<br />
    <span class="keyword">else</span><br />
    {<br />
        stage.displayState = StageDisplayState.NORMAL;<br />
    }<br />
}</pre>
<br />
swfobject.jsに<br />
<pre class="code">so.addParam(<span class="str">&quot;allowFullScreen&quot;</span>, <span class="str">&quot;true&quot;</span>);</pre>
を1行付け足します。<br />
<br />
出来上がったのはこんなかんじです。<br />
気持ちCNNやBBCの報道スタジオ風。<br />
<br />
<div id="so_papervision3d_flickr1"></div>
<script type="text/javascript">
<!--
	var so_papervision3d_flickr1= new SWFObject("http://blog.alt-scape.com/swf/papervision3d_flickr1.swf", "papervision3d_flickr1", "550", "400", "9", "#ffffff");
	so_papervision3d_flickr1.addParam("wmode", "window");
	so_papervision3d_flickr1.addParam("allowFullScreen", "true");
	so_papervision3d_flickr1.addParam("menu", "false");
	so_papervision3d_flickr1.write("so_papervision3d_flickr1");
-->
</script>
<br />
<br />
Flickr Servicesドキュメント<br />
<a href="http://www.flickr.com/services/api/" target="_blank" title="Flickr Servicesドキュメント">http://www.flickr.com/services/api/</a><br />
<br />
APIキー取得<br />
<a href="http://www.flickr.com/services/api/keys/" target="_blank" title="APIキー取得">http://www.flickr.com/services/api/keys/</a><br />
<br />
Flickr Api Explorer<br />
<a href="http://flickr.com/services/api/explore/?method=flickr.photos.search" target="_blank" title="Flickr Api Explorer">http://flickr.com/services/api/explore/?method=flickr.photos.search</a><br />
<br />
</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alt-scape.com/archives/230/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>文字音声変換API「TEXT2VOICE」を使ってみる</title>
		<link>http://blog.alt-scape.com/archives/214</link>
		<comments>http://blog.alt-scape.com/archives/214#comments</comments>
		<pubDate>Tue, 28 Oct 2008 03:11:35 +0000</pubDate>
		<dc:creator>alt</dc:creator>
				<category><![CDATA[サンプル]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[ソースコード]]></category>

		<guid isPermaLink="false">http://blog.alt-scape.com/?p=214</guid>
		<description><![CDATA[


こちら で提供されている文字を音声で返してくれるAPI「TEXT2VOICE」をテストしてみました。

左Flashはクリックすると、予め用意したランダムテキストをAPIを介して音声で流します。
右Flashはあな [...]]]></description>
			<content:encoded><![CDATA[<p>
<a rel="shadowbox;width=300;height=300" class="option" title="text2voice1" href="http://blog.alt-scape.com/swf/text2voice1.swf"><img src="http://blog.alt-scape.com/img/text2voice1.jpg" border="0" width="250" height="250" /></a><a rel="shadowbox;width=300;height=300" class="option" title="text2voice2" href="http://blog.alt-scape.com/swf/text2voice2.swf"><img src="http://blog.alt-scape.com/img/text2voice2.jpg" border="0" width="250" height="250" /></a><br />
<br />
<a href="http://api.satoru.net/" target="_blank" title="文字音声変換API TEXT2VOICE">こちら</a> で提供されている文字を音声で返してくれるAPI「<strong>TEXT2VOICE</strong>」をテストしてみました。<br />
<br />
左Flashはクリックすると、予め用意したランダムテキストをAPIを介して音声で流します。<br />
右Flashはあなたが入力したテキストをAPIを介して音声で流します。<br />
どちらもFlashからリクエストしています。<br />
<br />
これを発展させて<a href="http://www.1-click.jp/" target="_blank" title="1-Click Award"><strong>1-Click Award</strong></a>とか面白いの作れないかな～。<br />
<br />
<span id="more-214"></span><br />
ソースコード（API接続部分）は<br />
<pre class="code"><span class="keyword">var</span> req:URLRequest = <span class="keyword">new</span> URLRequest(<span class="str">&quot;http://api.satoru.net/text2voice/&quot;</span>);<br />
    <span class="keyword">var</span> loader:URLLoader = <span class="keyword">new</span> URLLoader();<br />
    <span class="keyword">var</span> variables:URLVariables = <span class="keyword">new</span> URLVariables();<br />
    variables.text = txt.text;<br />
    req.method = URLRequestMethod.GET;<br />
    req.data = variables;<br />
    loader.load(req);<br />
    loader.addEventListener(Event.COMPLETE, <span class="keyword">function</span>(e:Event):<span class="keyword">void</span>{<br />
        <br />
        <span class="rem">//音声ロード完了したら</span><br />
        <span class="keyword">var</span> sReq:URLRequest = <span class="keyword">new</span> URLRequest(loader.data);  <br />
        <span class="keyword">var</span> sd:Sound = <span class="keyword">new</span> Sound();  <br />
        sd.load(sReq);  <br />
        <span class="keyword">var</span> sc:SoundChannel = sd.play();  <br />
    });</pre></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alt-scape.com/archives/214/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

