<?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>planet-ape&#124;blog &#187; actionscript3.0</title>
	<atom:link href="http://www.planet-ape.net/blog/archives/tag/actionscript30/feed" rel="self" type="application/rss+xml" />
	<link>http://www.planet-ape.net/blog</link>
	<description>We Love WordPress</description>
	<lastBuildDate>Sun, 20 Nov 2011 09:36:42 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>youtubeからflvを引っこ抜いてごにょごにょする方法</title>
		<link>http://www.planet-ape.net/blog/archives/890</link>
		<comments>http://www.planet-ape.net/blog/archives/890#comments</comments>
		<pubDate>Sat, 02 Apr 2011 16:10:14 +0000</pubDate>
		<dc:creator>fumix</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[actionscript3.0]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[YouTube]]></category>
		<category><![CDATA[東京てら子]]></category>

		<guid isPermaLink="false">http://www.planet-ape.net/blog/?p=890</guid>
		<description><![CDATA[東京てら子14に参加しました。 youtubeから動画ファイル(flv)を引っこ抜いてごにょごにょする方法を発表したのですが、スライドも作らず、酷い発表でしたorz これではいかん！とkeynote買ったので、次回の発表 [...]]]></description>
			<content:encoded><![CDATA[				<p>東京てら子14に参加しました。<br />
				youtubeから動画ファイル(flv)を引っこ抜いてごにょごにょする方法を発表したのですが、スライドも作らず、酷い発表でしたorz<br />
				これではいかん！とkeynote買ったので、次回の発表こそは！<br />
				以下、まとめです。<br />
				<span id="more-890"></span></p>
				<h3>youtubeの検索</h3>
				<p>まずはyoutubeからキーワードで検索したデータを取得したいと思います。<br />
				これにはjsonやrss形式のデータとして取得できるAPIがyoutubeから提供されています。<br />
				<a href="http://code.google.com/intl/ja/apis/youtube/developers_guide_protocol.html#Searching_for_Videos">デベロッパー ガイド: Data API プロトコル -</a></p>
				<p>書かれているとおりに検索パラメータを設定してgdata.youtube.comへリクエストします。<br />
				Flash(acfionscript3)で扱うにはjson形式の方が楽だと思いますが、かなり大量の(ネストの深い)データが送られてくるので解析が結構厄介です。<br />
				ex:<a href="http://gdata.youtube.com/feeds/api/videos?start-index=1&#038;max-results=50&#038;orderby=viewCount&#038;alt=json&#038;vq=AKB48">akb48というキーワードで検索した結果</a></p>
				<p>これの解析用にjsonビュアー(エディタ)があると便利です。<br />
				<a href="http://jsonviewer.stack.hu/">http://jsonviewer.stack.hu/</a></p>
				<p>取得したjsonデータからサムネイル一覧を表示するサンプルを作ってみました。<br />
				<script type="text/javascript" src="http://wonderfl.net/blogparts/axrB/js"></script>
				<p class="ttlBpWonderfl" style="width: 465px; margin: 0; text-align: right; font-size: 11px;"><a href="http://wonderfl.net/c/axrB" title="youtube api">youtube api &#8211; wonderfl build flash online</a></p>
				<h3>動画ファイル(flv)の取得</h3>
				<p>上記のAPIから個々の動画のIDが取得できますが、youtubeから動画ファイル(flv)を取得するには別の<strong>（裏）API</strong>を使います。<br />
				<strong>http://www.youtube.com/get_video_info?video_id=ビデオID</strong></p>
				<p>ビデオIDは検索APIで取得した個々のyoutubeへのURLから抜き出しました。<br />
				これをリクエストするとデータのかたまり(URI風味)が返ってきます。</p>
				<pre>
fexp=904000&#038;shortform=True&#038;allow_embed=1&#038;ad_host_tier=1085614&#038;keywords=AKB48%E3%82%AA%E3%83%95%E3%82%A3%E3%82%B7%E3%83%A3%E3%83%ABYT%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB%2C%E3%83%98%E3%83%93%E3%83%BC%E3%83%AD%E3%83%BC%E3%83%86%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%2CAKB48%2CAKB%2CPV%2C%E5%A4%A7%E5%B3%B6%E5%84%AA%E5%AD%90%2C%E5%89%8D%E7%94%B0%E6%95%A6%E5%AD%90%2C%E7%AF%A0%E7%94%B0%E9%BA%BB%E9%87%8C%E5%AD%90%2C%E6%9D%BF%E9%87%8E%E5%8F%8B%E7%BE%8E%2C%E6%B8%A1%E8%BE%BA%E9%BA%BB%E5%8F%8B%2C%E9%AB%98%E6%A9%8B%E3%81%BF%E3%81%AA%E3%81%BF%2C%E5%B0%8F%E5%B6%8B%E9%99%BD%E8%8F%9C%2C%E6%9F%8F%E6%9C%A8%E7%94%B1%E7%B4%80%2C%E5%AE%AE%E6%BE%A4%E4%BD%90%E6%B1%9F%2C%E6%9D%BE%E4%BA%95%E7%8F%A0%E9%87%8C%E5%A5%88%2C%E6%9D%BE%E4%BA%95%E7%8E%B2%E5%A5%88%2C%E6%B2%B3%E8%A5%BF%E6%99%BA%E7%BE%8E%2C%E9%AB%98%E5%9F%8E%E4%BA%9C%E6%A8%B9%2C%E5%B3%AF%E5%B2%B8%E3%81%BF%E3%81%AA%E3%81%BF%2C%E5%B0%8F%E9%87%8E%E6%81%B5%E4%BB%A4%E5%A5%88%2C%E5%8C%97%E5%8E%9F%E9%87%8C%E8%8B%B1%2C%E7%A7%8B%E5%85%83%E6%89%8D%E5%8A%A0%2C%E4%BD%90%E8%97%A4%E4%BA%9C%E7%BE%8E%E8%8F%9C%2C%E6%8C%87%E5%8E%9F%E8%8E%89%E4%B9%83%2C%E4%BB%B2%E5%B7%9D%E9%81%A5%E9%A6%99%2C%E5%AE%AE%E5%B4%8E%E7%BE%8E%E7%A9%82%2C%E3%83%81%E3%83%BC%E3%83%A0A%2C%E3%83%81%E3%83%BC%E3%83%A0K%2C%E3%83%81%E3%83%BC%E3%83%A0B%2CSKE48&#038;cafe_experiment_id=&#038;fmt_url_map=35%7Chttp%3A%2F%2Fv2.lscache6.c.youtube.com%2Fvideoplayback%3Fsparams%3Did%252Cexpire%252Cip%252Cipbits%252Citag%252Calgorithm%252Cburst%252Cfactor%252Coc%253AU0hPRlJOUl9FSkNOOV9KSFZF%26fexp%3D904000%26algorithm%3Dthrottle-factor%26itag%3D35%26ipbits%3D0%26burst%3D40%26sver%3D3%26signature%3D57D90DF7001E8ED2DB059A6975490B405FE5FF2D.7D64AA17401DD3EBAF5B0A3E3D7AFF1299987607%26expire%3D1301234400%26key%3Dyt1%26ip%3D0.0.0.0%26factor%3D1.25%26id%3D9641e59d61670347%2C34%7Chttp%3A%2F%2Fv16.lscache8.c.youtube.com%2Fvideoplayback%3Fsparams%3Did%252Cexpire%252Cip%252Cipbits%252Citag%252Calgorithm%252Cburst%252Cfactor%252Coc%253AU0hPRlJOUl9FSkNOOV9KSFZF%26fexp%3D904000%26algorithm%3Dthrottle-factor%26itag%3D34%26ipbits%3D0%26burst%3D40%26sver%3D3%26signature%3D164BB4EFB44A54B1FB3765B66F346F62CE3A3B19.559CA335DC8339D0D2BAB3D2E644F2FB54BB46BD%26expire%3D1301234400%26key%3Dyt1%26ip%3D0.0.0.0%26factor%3D1.25%26id%3D9641e59d61670347%2C18%7Chttp%3A%2F%2Fv18.lscache8.c.youtube.com%2Fvideoplayback%3Fsparams%3Did%252Cexpire%252Cip%252Cipbits%252Citag%252Calgorithm%252Cburst%252Cfactor%252Coc%253AU0hPRlJOUl9FSkNOOV9KSFZF%26fexp%3D904000%26algorithm%3Dthrottle-factor%26itag%3D18%26ipbits%3D0%26burst%3D40%26sver%3D3%26signature%3D254D84294E4F8D68A269788C060E81F449CA5032.7632200AE7E393B6206FBE0C692B5BC0235D42C8%26expire%3D1301234400%26key%3Dyt1%26ip%3D0.0.0.0%26factor%3D1.25%26id%3D9641e59d61670347%2C5%7Chttp%3A%2F%2Fv22.lscache2.c.youtube.com%2Fvideoplayback%3Fsparams%3Did%252Cexpire%252Cip%252Cipbits%252Citag%252Calgorithm%252Cburst%252Cfactor%252Coc%253AU0hPRlJOUl9FSkNOOV9KSFZF%26fexp%3D904000%26algorithm%3Dthrottle-factor%26itag%3D5%26ipbits%3D0%26burst%3D40%26sver%3D3%26signature%3DA1748203968C1599BE0714FE0078E193B4B7ACF5.0C12FCFCFC260F767B3E14F4AD3BEC254D989802%26expire%3D1301234400%26key%3Dyt1%26ip%3D0.0.0.0%26factor%3D1.25%26id%3D9641e59d61670347&#038;allow_ratings=1&#038;user_gender=m&#038;cust_gender=1&#038;track_embed=1&#038;host_language=ja&#038;cust_age=1003&#038;gut_tag=%2F4061%2Fytunknown%2Fmain&#038;fmt_list=35%2F854x480%2F9%2F0%2F115%2C34%2F640x360%2F9%2F0%2F115%2C18%2F640x360%2F9%2F0%2F115%2C5%2F320x240%2F7%2F0%2F0&#038;author=AKB48&#038;muted=0&#038;ast=site_content&#038;length_seconds=337&#038;user_age=35&#038;has_cc=False&#038;ad_channel_code_overlay=invideo_overlay_480x70_cat10%2Cafv_overlay%2Cytps_default%2Cytel_embedded%2Cyt_mpvid_AASfcYTynvKO-t3z%2Cyt_cid_395520%2Cytexp_904000&#038;ftoken=BMEhOBEQC8SQMoVNCVygJs5x08R8MTMwMTI5NjIxNw%3D%3D&#038;mpvid=AASfcYTynvKO-t3z&#038;sffb=True&#038;ad_module=http%3A%2F%2Fs.ytimg.com%2Fyt%2Fswfbin%2Fad-vflAK0aS4.swf&#038;status=ok&#038;watermark=http%3A%2F%2Fs.ytimg.com%2Fyt%2Fswf%2Flogo-vfl_bP6ud.swf%2Chttp%3A%2F%2Fs.ytimg.com%2Fyt%2Fswf%2Fhdlogo-vfloR6wva.swf&#038;timestamp=1301209817&#038;plid=AASfcYTyotzUMNNH&#038;ad_host=ca-host-pub-9560003102968193&#038;watch_ajax_token=OT2R7bUoNEmhvjheRGPVYvJBGb98MTMwMTI5NjIxNw%3D%3D&#038;fmt_map=35%2F854x480%2F9%2F0%2F115%2C34%2F640x360%2F9%2F0%2F115%2C18%2F640x360%2F9%2F0%2F115%2C5%2F320x240%2F7%2F0%2F0&#038;cid=395520&#038;hl=ja_JP&#038;ad_flags=0&#038;afv=True&#038;logwatch=1&#038;endscreen_module=http%3A%2F%2Fs.ytimg.com%2Fyt%2Fswfbin%2Fendscreen-vfliijCMI.swf&#038;ad_eurl=http%3A%2F%2Fwww.youtube.com%2Fvideo%2FlkHlnWFnA0c&#038;fmt_stream_map=35%7Chttp%3A%2F%2Fv2.lscache6.c.youtube.com%2Fvideoplayback%3Fsparams%3Did%252Cexpire%252Cip%252Cipbits%252Citag%252Calgorithm%252Cburst%252Cfactor%252Coc%253AU0hPRlJOUl9FSkNOOV9KSFZF%26fexp%3D904000%26algorithm%3Dthrottle-factor%26itag%3D35%26ipbits%3D0%26burst%3D40%26sver%3D3%26signature%3D57D90DF7001E8ED2DB059A6975490B405FE5FF2D.7D64AA17401DD3EBAF5B0A3E3D7AFF1299987607%26expire%3D1301234400%26key%3Dyt1%26ip%3D0.0.0.0%26factor%3D1.25%26id%3D9641e59d61670347%7C%7Ctc.v2.cache6.c.youtube.com%2C34%7Chttp%3A%2F%2Fv16.lscache8.c.youtube.com%2Fvideoplayback%3Fsparams%3Did%252Cexpire%252Cip%252Cipbits%252Citag%252Calgorithm%252Cburst%252Cfactor%252Coc%253AU0hPRlJOUl9FSkNOOV9KSFZF%26fexp%3D904000%26algorithm%3Dthrottle-factor%26itag%3D34%26ipbits%3D0%26burst%3D40%26sver%3D3%26signature%3D164BB4EFB44A54B1FB3765B66F346F62CE3A3B19.559CA335DC8339D0D2BAB3D2E644F2FB54BB46BD%26expire%3D1301234400%26key%3Dyt1%26ip%3D0.0.0.0%26factor%3D1.25%26id%3D9641e59d61670347%7C%7Ctc.v16.cache8.c.youtube.com%2C18%7Chttp%3A%2F%2Fv18.lscache8.c.youtube.com%2Fvideoplayback%3Fsparams%3Did%252Cexpire%252Cip%252Cipbits%252Citag%252Calgorithm%252Cburst%252Cfactor%252Coc%253AU0hPRlJOUl9FSkNOOV9KSFZF%26fexp%3D904000%26algorithm%3Dthrottle-factor%26itag%3D18%26ipbits%3D0%26burst%3D40%26sver%3D3%26signature%3D254D84294E4F8D68A269788C060E81F449CA5032.7632200AE7E393B6206FBE0C692B5BC0235D42C8%26expire%3D1301234400%26key%3Dyt1%26ip%3D0.0.0.0%26factor%3D1.25%26id%3D9641e59d61670347%7C%7Ctc.v18.cache8.c.youtube.com%2C5%7Chttp%3A%2F%2Fv22.lscache2.c.youtube.com%2Fvideoplayback%3Fsparams%3Did%252Cexpire%252Cip%252Cipbits%252Citag%252Calgorithm%252Cburst%252Cfactor%252Coc%253AU0hPRlJOUl9FSkNOOV9KSFZF%26fexp%3D904000%26algorithm%3Dthrottle-factor%26itag%3D5%26ipbits%3D0%26burst%3D40%26sver%3D3%26signature%3DA1748203968C1599BE0714FE0078E193B4B7ACF5.0C12FCFCFC260F767B3E14F4AD3BEC254D989802%26expire%3D1301234400%26key%3Dyt1%26ip%3D0.0.0.0%26factor%3D1.25%26id%3D9641e59d61670347%7C%7Ctc.v22.cache2.c.youtube.com&#038;pyv_in_related_cafe_experiment_id=&#038;avg_rating=4.09949757022&#038;leanback_module=http%3A%2F%2Fs.ytimg.com%2Fyt%2Fswfbin%2Fleanback_module-vflcVMkEi.swf&#038;ad_logging_flag=1&#038;vq=auto&#038;targeting_video_doc_id=&#038;token=vjVQa1PpcFOPYn1MXZhSuHyseixrHJok0Hpycfs0B_E%3D&#038;thumbnail_url=http%3A%2F%2Fi1.ytimg.com%2Fvi%2FlkHlnWFnA0c%2Fdefault.jpg&#038;ad_video_pub_id=ca-pub-6219811747049371&#038;video_id=lkHlnWFnA0c&#038;title=%E3%80%90PV%E3%80%91+%E3%83%98%E3%83%93%E3%83%BC%E3%83%AD%E3%83%BC%E3%83%86%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3+%2F+AKB48+%5B%E5%85%AC%E5%BC%8F%5D
</pre>
				<p>もう何だか分からないデータなので&#038;でsplitし、さらに=でsplitすると良い感じのobjectデータになります。</p>
				<pre>
ftoken:8Kzm9UBF0QVJJFrf3XIdwyYuDnl8MTMwMTgxNTk2Nw%3D%3D
vq:auto
mpvid:AASf6ohyqG2kkUl5
targeting_video_doc_id:
sffb:True
track_embed:1
status:ok
host_language:ja
ad_module:http%3A%2F%2Fs.ytimg.com%2Fyt%2Fswfbin%2Fad-vflsLLPjn.swf
thumbnail_url:http%3A%2F%2Fi1.ytimg.com%2Fvi%2FlkHlnWFnA0c%2Fdefault.jpg
ad_video_pub_id:ca-pub-6219811747049371
watermark:http%3A%2F%2Fs.ytimg.com%2Fyt%2Fswf%2Flogo-vfl_bP6ud.swf%2Chttp%3A%2F%2Fs.ytimg.com%2Fyt%2Fswf%2Fhdlogo-vfloR6wva.swf
video_id:lkHlnWFnA0c
fmt_list:35%2F854x480%2F9%2F0%2F115%2C34%2F640x360%2F9%2F0%2F115%2C18%2F640x360%2F9%2F0%2F115%2C5%2F320x240%2F7%2F0%2F0
token:vjVQa1PpcFOP8CA52yQIbIqCU7Ba3fO-MsgAFxBQbYk%3D
cust_age:1003
fmt_stream_map:35%7Chttp%3A%2F%2Fv2.lscache6.c.youtube.com%2Fvideoplayback%3Fsparams%3Did%252Cexpire%252Cip%252Cipbits%252Citag%252Calgorithm%252Cburst%252Cfactor%252Coc%253AU0hPRldQUF9FSkNOOV9PSlRJ%26fexp%3D904000%26algorithm%3Dthrottle-factor%26itag%3D35%26ipbits%3D0%26burst%3D40%26sver%3D3%26signature%3D35DDC2DD5775831756FA7E46049890EE2C306C88.941B2560FB8C53D8F6BB04D720ED949F4406F587%26expire%3D1301752800%26key%3Dyt1%26ip%3D0.0.0.0%26factor%3D1.25%26id%3D9641e59d61670347%7C%7Ctc.v2.cache6.c.youtube.com%2C34%7Chttp%3A%2F%2Fv16.lscache8.c.youtube.com%2Fvideoplayback%3Fsparams%3Did%252Cexpire%252Cip%252Cipbits%252Citag%252Calgorithm%252Cburst%252Cfactor%252Coc%253AU0hPRldQUF9FSkNOOV9PSlRJ%26fexp%3D904000%26algorithm%3Dthrottle-factor%26itag%3D34%26ipbits%3D0%26burst%3D40%26sver%3D3%26signature%3D316FD89E6B91F8952E8DCA58D7E5D0C7F40BBF7E.A023A3DC790668C3FC1FC298E472B72D208DDF7E%26expire%3D1301752800%26key%3Dyt1%26ip%3D0.0.0.0%26factor%3D1.25%26id%3D9641e59d61670347%7C%7Ctc.v16.cache8.c.youtube.com%2C18%7Chttp%3A%2F%2Fv18.lscache8.c.youtube.com%2Fvideoplayback%3Fsparams%3Did%252Cexpire%252Cip%252Cipbits%252Citag%252Calgorithm%252Cburst%252Cfactor%252Coc%253AU0hPRldQUF9FSkNOOV9PSlRJ%26fexp%3D904000%26algorithm%3Dthrottle-factor%26itag%3D18%26ipbits%3D0%26burst%3D40%26sver%3D3%26signature%3DB7744E4DC036A8401AC4807D087270E6495055FD.6101957B15997A7A287A20CCB66709E78C44F49D%26expire%3D1301752800%26key%3Dyt1%26ip%3D0.0.0.0%26factor%3D1.25%26id%3D9641e59d61670347%7C%7Ctc.v18.cache8.c.youtube.com%2C5%7Chttp%3A%2F%2Fv22.lscache2.c.youtube.com%2Fvideoplayback%3Fsparams%3Did%252Cexpire%252Cip%252Cipbits%252Citag%252Calgorithm%252Cburst%252Cfactor%252Coc%253AU0hPRldQUF9FSkNOOV9PSlRJ%26fexp%3D904000%26algorithm%3Dthrottle-factor%26itag%3D5%26ipbits%3D0%26burst%3D40%26sver%3D3%26signature%3D8EBE70874078CB033EC2E64D2A2788F75C2449C7.07DFD00BD1F715CE3CF790271B4EA447C8AC3D33%26expire%3D1301752800%26key%3Dyt1%26ip%3D0.0.0.0%26factor%3D1.25%26id%3D9641e59d61670347%7C%7Ctc.v22.cache2.c.youtube.com
allow_embed:1
plid:AASf6ohyquVulsGc
title:%E3%80%90PV%E3%80%91+%E3%83%98%E3%83%93%E3%83%BC%E3%83%AD%E3%83%BC%E3%83%86%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3+%2F+AKB48+%5B%E5%85%AC%E5%BC%8F%5D
gut_tag:%2F4061%2Fytunknown%2Fmain
timestamp:1301729567
author:AKB48
watch_ajax_token:TT9_MyGaIHAGRcpaj4GNuom446R8MTMwMTgxNTk2Nw%3D%3D
ad_host:ca-host-pub-9560003102968193
fmt_map:35%2F854x480%2F9%2F0%2F115%2C34%2F640x360%2F9%2F0%2F115%2C18%2F640x360%2F9%2F0%2F115%2C5%2F320x240%2F7%2F0%2F0
ad_host_tier:1085614
keywords:AKB48%E3%82%AA%E3%83%95%E3%82%A3%E3%82%B7%E3%83%A3%E3%83%ABYT%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB%2C%E3%83%98%E3%83%93%E3%83%BC%E3%83%AD%E3%83%BC%E3%83%86%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%2CAKB48%2CAKB%2CPV%2C%E5%A4%A7%E5%B3%B6%E5%84%AA%E5%AD%90%2C%E5%89%8D%E7%94%B0%E6%95%A6%E5%AD%90%2C%E7%AF%A0%E7%94%B0%E9%BA%BB%E9%87%8C%E5%AD%90%2C%E6%9D%BF%E9%87%8E%E5%8F%8B%E7%BE%8E%2C%E6%B8%A1%E8%BE%BA%E9%BA%BB%E5%8F%8B%2C%E9%AB%98%E6%A9%8B%E3%81%BF%E3%81%AA%E3%81%BF%2C%E5%B0%8F%E5%B6%8B%E9%99%BD%E8%8F%9C%2C%E6%9F%8F%E6%9C%A8%E7%94%B1%E7%B4%80%2C%E5%AE%AE%E6%BE%A4%E4%BD%90%E6%B1%9F%2C%E6%9D%BE%E4%BA%95%E7%8F%A0%E9%87%8C%E5%A5%88%2C%E6%9D%BE%E4%BA%95%E7%8E%B2%E5%A5%88%2C%E6%B2%B3%E8%A5%BF%E6%99%BA%E7%BE%8E%2C%E9%AB%98%E5%9F%8E%E4%BA%9C%E6%A8%B9%2C%E5%B3%AF%E5%B2%B8%E3%81%BF%E3%81%AA%E3%81%BF%2C%E5%B0%8F%E9%87%8E%E6%81%B5%E4%BB%A4%E5%A5%88%2C%E5%8C%97%E5%8E%9F%E9%87%8C%E8%8B%B1%2C%E7%A7%8B%E5%85%83%E6%89%8D%E5%8A%A0%2C%E4%BD%90%E8%97%A4%E4%BA%9C%E7%BE%8E%E8%8F%9C%2C%E6%8C%87%E5%8E%9F%E8%8E%89%E4%B9%83%2C%E4%BB%B2%E5%B7%9D%E9%81%A5%E9%A6%99%2C%E5%AE%AE%E5%B4%8E%E7%BE%8E%E7%A9%82%2C%E3%83%81%E3%83%BC%E3%83%A0A%2C%E3%83%81%E3%83%BC%E3%83%A0K%2C%E3%83%81%E3%83%BC%E3%83%A0B%2CSKE48
cid:395520
shortform:True
hl:ja_JP
ad_flags:0
afv:True
muted:0
endscreen_module:http%3A%2F%2Fs.ytimg.com%2Fyt%2Fswfbin%2Fendscreen-vflYjC_7j.swf
ast:site_content
fexp:904000
ad_eurl:http%3A%2F%2Fwww.youtube.com%2Fvideo%2FlkHlnWFnA0c
length_seconds:337
fmt_url_map:35%7Chttp%3A%2F%2Fv2.lscache6.c.youtube.com%2Fvideoplayback%3Fsparams%3Did%252Cexpire%252Cip%252Cipbits%252Citag%252Calgorithm%252Cburst%252Cfactor%252Coc%253AU0hPRldQUF9FSkNOOV9PSlRJ%26fexp%3D904000%26algorithm%3Dthrottle-factor%26itag%3D35%26ipbits%3D0%26burst%3D40%26sver%3D3%26signature%3D35DDC2DD5775831756FA7E46049890EE2C306C88.941B2560FB8C53D8F6BB04D720ED949F4406F587%26expire%3D1301752800%26key%3Dyt1%26ip%3D0.0.0.0%26factor%3D1.25%26id%3D9641e59d61670347%2C34%7Chttp%3A%2F%2Fv16.lscache8.c.youtube.com%2Fvideoplayback%3Fsparams%3Did%252Cexpire%252Cip%252Cipbits%252Citag%252Calgorithm%252Cburst%252Cfactor%252Coc%253AU0hPRldQUF9FSkNOOV9PSlRJ%26fexp%3D904000%26algorithm%3Dthrottle-factor%26itag%3D34%26ipbits%3D0%26burst%3D40%26sver%3D3%26signature%3D316FD89E6B91F8952E8DCA58D7E5D0C7F40BBF7E.A023A3DC790668C3FC1FC298E472B72D208DDF7E%26expire%3D1301752800%26key%3Dyt1%26ip%3D0.0.0.0%26factor%3D1.25%26id%3D9641e59d61670347%2C18%7Chttp%3A%2F%2Fv18.lscache8.c.youtube.com%2Fvideoplayback%3Fsparams%3Did%252Cexpire%252Cip%252Cipbits%252Citag%252Calgorithm%252Cburst%252Cfactor%252Coc%253AU0hPRldQUF9FSkNOOV9PSlRJ%26fexp%3D904000%26algorithm%3Dthrottle-factor%26itag%3D18%26ipbits%3D0%26burst%3D40%26sver%3D3%26signature%3DB7744E4DC036A8401AC4807D087270E6495055FD.6101957B15997A7A287A20CCB66709E78C44F49D%26expire%3D1301752800%26key%3Dyt1%26ip%3D0.0.0.0%26factor%3D1.25%26id%3D9641e59d61670347%2C5%7Chttp%3A%2F%2Fv22.lscache2.c.youtube.com%2Fvideoplayback%3Fsparams%3Did%252Cexpire%252Cip%252Cipbits%252Citag%252Calgorithm%252Cburst%252Cfactor%252Coc%253AU0hPRldQUF9FSkNOOV9PSlRJ%26fexp%3D904000%26algorithm%3Dthrottle-factor%26itag%3D5%26ipbits%3D0%26burst%3D40%26sver%3D3%26signature%3D8EBE70874078CB033EC2E64D2A2788F75C2449C7.07DFD00BD1F715CE3CF790271B4EA447C8AC3D33%26expire%3D1301752800%26key%3Dyt1%26ip%3D0.0.0.0%26factor%3D1.25%26id%3D9641e59d61670347
logwatch:1
cust_gender:1
user_age:35
pyv_in_related_cafe_experiment_id:
avg_rating:4.09653092006
ad_channel_code_overlay:invideo_overlay_480x70_cat10%2Cafv_overlay%2Cytps_default%2Cytel_embedded%2Cyt_mpvid_AASf6ohyqG2kkUl5%2Cyt_cid_395520%2Cytexp_904000
allow_ratings:1
user_gender:m
leanback_module:http%3A%2F%2Fs.ytimg.com%2Fyt%2Fswfbin%2Fleanback_module-vflAPy5OS.swf
has_cc:False
ad_logging_flag:1
</pre>
				<p>この中のfmt_stream_mapにflvまでのurlが入っていますので、URLエンコードしたものを抜き出してみます。</p>
				<pre>
0:35|http://v2.lscache6.c.youtube.com/videoplayback?sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Calgorithm%2Cburst%2Cfactor%2Coc%3AU0hPRldQUF9FSkNOOV9PSlRJ&#038;fexp=904000&#038;algorithm=throttle-factor&#038;itag=35&#038;ipbits=0&#038;burst=40&#038;sver=3&#038;signature=35DDC2DD5775831756FA7E46049890EE2C306C88.941B2560FB8C53D8F6BB04D720ED949F4406F587&#038;expire=1301752800&#038;key=yt1&#038;ip=0.0.0.0&#038;factor=1.25&#038;id=9641e59d61670347||tc.v2.cache6.c.youtube.com
1:34|http://v16.lscache8.c.youtube.com/videoplayback?sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Calgorithm%2Cburst%2Cfactor%2Coc%3AU0hPRldQUF9FSkNOOV9PSlRJ&#038;fexp=904000&#038;algorithm=throttle-factor&#038;itag=34&#038;ipbits=0&#038;burst=40&#038;sver=3&#038;signature=316FD89E6B91F8952E8DCA58D7E5D0C7F40BBF7E.A023A3DC790668C3FC1FC298E472B72D208DDF7E&#038;expire=1301752800&#038;key=yt1&#038;ip=0.0.0.0&#038;factor=1.25&#038;id=9641e59d61670347||tc.v16.cache8.c.youtube.com
2:18|http://v18.lscache8.c.youtube.com/videoplayback?sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Calgorithm%2Cburst%2Cfactor%2Coc%3AU0hPRldQUF9FSkNOOV9PSlRJ&#038;fexp=904000&#038;algorithm=throttle-factor&#038;itag=18&#038;ipbits=0&#038;burst=40&#038;sver=3&#038;signature=B7744E4DC036A8401AC4807D087270E6495055FD.6101957B15997A7A287A20CCB66709E78C44F49D&#038;expire=1301752800&#038;key=yt1&#038;ip=0.0.0.0&#038;factor=1.25&#038;id=9641e59d61670347||tc.v18.cache8.c.youtube.com
3:5|http://v22.lscache2.c.youtube.com/videoplayback?sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Calgorithm%2Cburst%2Cfactor%2Coc%3AU0hPRldQUF9FSkNOOV9PSlRJ&#038;fexp=904000&#038;algorithm=throttle-factor&#038;itag=5&#038;ipbits=0&#038;burst=40&#038;sver=3&#038;signature=8EBE70874078CB033EC2E64D2A2788F75C2449C7.07DFD00BD1F715CE3CF790271B4EA447C8AC3D33&#038;expire=1301752800&#038;key=yt1&#038;ip=0.0.0.0&#038;factor=1.25&#038;id=9641e59d61670347||tc.v22.cache2.c.youtube.com
</pre>
				<p><strong>,</strong>でsplitしてみると４つデータが取得出来ますが、まだurlとしては使えません。<br />
				更に|でsplitするとようやっとflvのURLが取得出来ます。</p>
				<pre>

http://v2.lscache6.c.youtube.com/videoplayback?sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Calgorithm%2Cburst%2Cfactor%2Coc%3AU0hPRldQUF9FSkNOOV9PSlRJ&#038;fexp=904000&#038;algorithm=throttle-factor&#038;itag=35&#038;ipbits=0&#038;burst=40&#038;sver=3&#038;signature=35DDC2DD5775831756FA7E46049890EE2C306C88.941B2560FB8C53D8F6BB04D720ED949F4406F587&#038;expire=1301752800&#038;key=yt1&#038;ip=0.0.0.0&#038;factor=1.25&#038;id=9641e59d61670347
</pre>
				<p>ただこのflvはクロスドメイン許可されていませんので取得は出来ますが、Flash内で使用してもローカルでしか動かせませんorz<br />
				さらにyoutubeから提供されているAPIを使って専用のswfをロードすれば、Flash内で再生だけでなく、bitmap等も直接取得することができるようです。<br />
				というわけで、全く意味の無い発表だったのですが、flvを直接取得して色々とゴニョゴニョしたい人はこれで色々できますね笑</p>
				<p>当日に発表したコンテンツl※FDT／FBプロジェクト<br />
				<a href='http://www.planet-ape.net/wp-content/uploads/2011/04/youtubeapi.zip'>youtubeapi</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.planet-ape.net/blog/archives/890/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>DoTextAnimationコマンド(Progrssion4用)を作りました</title>
		<link>http://www.planet-ape.net/blog/archives/862</link>
		<comments>http://www.planet-ape.net/blog/archives/862#comments</comments>
		<pubDate>Thu, 31 Dec 2009 09:49:13 +0000</pubDate>
		<dc:creator>fumix</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[actionscript3.0]]></category>
		<category><![CDATA[BetweenAS3]]></category>
		<category><![CDATA[Progression]]></category>

		<guid isPermaLink="false">http://www.planet-ape.net/blog/?p=862</guid>
		<description><![CDATA[普段はいうほどFlashを触ってないので「年末年始は逆にいっぱいFlash触ろう！」的なやつの第1弾です（2弾以降続く保証は全くないです）。 ランダムにテキストがピロピロ？とアニメーションする、よく見るエフェクトをPro [...]]]></description>
			<content:encoded><![CDATA[				<p>普段はいうほどFlashを触ってないので「年末年始は逆にいっぱいFlash触ろう！」的なやつの第1弾です（2弾以降続く保証は全くないです）。<br />
				ランダムにテキストがピロピロ？とアニメーションする、よく見るエフェクトをProgression4用のコマンドとして作ってみました。<br />
				<span id="more-862"></span><br />
				<a href="http://wonderfl.net/code/31708cc4caa15c0ba3c37ab098bc33fab677de12">wonderflに実装例</a>が既にあるのでそれを元に作ろうと思ったのですが、あまり自由度が無い感じでアニメーション自体もイマイチ好みじゃないので別実装しました。</p>
				<p>ソース（zip）<br />
				・<a href='http://www.planet-ape.net/wp-content/uploads/2009/12/DoTextAnimation.as_.zip'>DoTextAnimation.as</a><br />
				※別途<a href="http://www.libspark.org/wiki/BetweenAS3/en">BetweenAS3ライブラリ</a>が必要です。</p>
				<p>以下、サンプルと使用例のasです。</p>
				<p><div style="text-align: center; width:200px; height:25px; line-height:25px; background: #ffffff;"><div id="swf1d582">This movie requires Flash Player 9.0.0</div></div>
				<script type="text/javascript">
					swfobject.embedSWF("http://www.planet-ape.net/wp-content/uploads/2009/12/Sample.swf", "swf1d582", "200", "25", "9.0.0", "http://www.planet-ape.net/kjFavmAascPn9aB/wp-content/plugins/wp-al-swfobject/expressInstall.swf", {}, {}, {});
				</script>
				</p>
				<pre class="brush: as">
package {
	import jp.progression.commands.lists.LoopList;
	import org.libspark.betweenas3.easing.Expo;
	import flash.display.MovieClip;
	import flash.events.Event;
	import flash.text.TextField;

	/**
	 * @author fumix
	 */
	 [SWF(backgroundColor="#FFFFFF", frameRate="30", width="200", height="25")]
	public class Sample extends MovieClip {
		private var tf : TextField;

		public function Sample() {
			addEventListener(Event.ADDED_TO_STAGE, _initialize);
		}

		private function _initialize(event : Event) : void {
			tf = new TextField();
			tf.x = tf.y = 5;
			addChild(tf);
			var loop:LoopList = new LoopList();
			loop.addCommand(
				new DoTextAnimation(tf, "Hello World!!","welcome to www.planet-ape.net!",
					{
						step: 4,
						time: 3,
						characters: "0123456789-#",
						transition: Expo.easeInOut
					}),
				new DoTextAnimation(tf, "welcome to www.planet-ape.net!","Hello World!!",
					{
						step: 4,
						time: 3,
						delay: 1,
						//characters: "0123456789-#",
						transition: Expo.easeInOut
					})
			);
			loop.execute();
		}
	}
}
</pre>
				<p>LoopList内に2つDoTextAnimationを設置してループさせています。<br />
				第1引数が対象となるTextField、第2引数が変化前のテキスト、第3引数が変化後のテキストとなり、この3つは必須です。<br />
				それ以降のObjectはプロパティ名から何となく分かると思います（ぉ）。<br />
				Objectは全くなくても動作します。</p>
				<p>元ネタ：<a href="http://labs.hellokeita.com/2007/09/20/textanimation/">labs.hellokeita.com » TextAnimation</a><br />
				ゼロから実装できるほどas得意じゃないんで、元ネタ有りです。<br />
				はい、もうTextAnimationの元祖的な感じです。<br />
				元ネタはtransition自体も自力実装だったのですが・・・すいません、BetweenAS3使ってます。</p>
				<p>自分で言うのもなんですが、なかなか良さげなコマンドができました。<br />
				初めてまともに使えそうなコマンドになったなあ、と。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.planet-ape.net/blog/archives/862/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>超速ボロノイ図 (Fortune&#8217;s algorithm)</title>
		<link>http://www.planet-ape.net/blog/archives/856</link>
		<comments>http://www.planet-ape.net/blog/archives/856#comments</comments>
		<pubDate>Sun, 27 Dec 2009 02:34:17 +0000</pubDate>
		<dc:creator>fumix</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[actionscript3.0]]></category>
		<category><![CDATA[voronoi]]></category>
		<category><![CDATA[wonderfl]]></category>

		<guid isPermaLink="false">http://www.planet-ape.net/?p=856</guid>
		<description><![CDATA[ドロネー図を作ったのならボロノイ図も作るでしょうってことで、前回のものから間が空きましたがボロノイ図をwonderflにて作りました。 超速ボロノイ図（Fortune&#8217;s algorithm） &#8211; [...]]]></description>
			<content:encoded><![CDATA[				<p>ドロネー図を作ったのならボロノイ図も作るでしょうってことで、前回のものから間が空きましたがボロノイ図をwonderflにて作りました。<br />
				<span id="more-856"></span></p>
				<div style="text-align:center;width:465px;"><iframe title="超速ボロノイ図（Fortune's algorithm） - wonderfl build flash online" scrolling="no" src="http://wonderfl.net/blogparts/1b53ccd79d8620d235f03ed4cd9e821912879f9e" width="465" height="490" style="border:1px black solid;"></iframe><a href="http://wonderfl.net/code/1b53ccd79d8620d235f03ed4cd9e821912879f9e" title="超速ボロノイ図（Fortune's algorithm） - wonderfl build flash online">超速ボロノイ図（Fortune&#8217;s algorithm） &#8211; wonderfl build flash online</a></div>
				<p>ボロノイ図を描く方法はいくつかあるのですが、今回はFortune&#8217;s algorithmと呼ばれるアルゴリズムを用いて描画してみました。<br />
				・<a href="http://en.wikipedia.org/wiki/Fortune's_algorithm">Fortune&#8217;s algorithm &#8211; Wikipedia, the free encyclopedia</a><br />
				・<a href="http://atom.is.ocha.ac.jp/~kanenko/KOUGI/CompGeo/cpgeob.pdf">日本語の資料1（PDF）</a><br />
				・<a href="http://i-health.u-aizu.ac.jp/CompuGeo/2008/handouts/chapter4/Chapter4H.pdf">日本語の資料2（PDF）</a></p>
				<p>Fortune&#8217;s algorithmは他のボロノイ図描画アルゴリズムに比べてかなり速く、800個程度の母点を設置してもfpsが落ちること無く動作します。<br />
				と偉そうに書いてますが、下記サイトにあったasをまるパクリしています。<br />
				・<a href="http://blog.controul.com/2009/05/speedy-voronoi-diagrams-in-as3flash/">Controul > Speedy Voronoi diagrams in as3/flash</a></p>
				<p>ぶっちゃけソースが追えません（ぇー）<br />
				識者の方に解説をお願いしたいです。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.planet-ape.net/blog/archives/856/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ドロネーたん</title>
		<link>http://www.planet-ape.net/blog/archives/853</link>
		<comments>http://www.planet-ape.net/blog/archives/853#comments</comments>
		<pubDate>Mon, 23 Nov 2009 17:09:25 +0000</pubDate>
		<dc:creator>fumix</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[actionscript3.0]]></category>
		<category><![CDATA[wonderfl]]></category>

		<guid isPermaLink="false">http://www.planet-ape.net/?p=853</guid>
		<description><![CDATA[※萌え擬人化の予定はありません。 何となくドロネー図がマイブームだったので色々調べて作ってみました。 車輪の再開発どころの騒ぎじゃないですが・・・。 ドロネー図（分割） &#8211; wonderfl build fl [...]]]></description>
			<content:encoded><![CDATA[				<p><strong>※萌え擬人化の予定はありません。</strong><br />
				何となく<a href="http://ja.wikipedia.org/wiki/%E3%83%89%E3%83%AD%E3%83%8D%E3%83%BC%E5%9B%B3">ドロネー図</a>がマイブームだったので色々調べて作ってみました。<br />
				車輪の再開発どころの騒ぎじゃないですが・・・。<br />
				<span id="more-853"></span></p>
				<div style="text-align:center;width:465px;"><iframe title="ドロネー図（分割） - wonderfl build flash online" scrolling="no" src="http://wonderfl.net/blogparts/97abee157680ac24ce5596c4f99105c61e1f7571" width="465" height="490" style="border:1px black solid;"></iframe><a href="http://wonderfl.net/code/97abee157680ac24ce5596c4f99105c61e1f7571" title="ドロネー図（分割） - wonderfl build flash online">ドロネー図（分割） &#8211; wonderfl build flash online</a></div>
				<p>三角形の<a href="http://ja.wikipedia.org/wiki/%E5%A4%96%E6%8E%A5%E5%86%86">外接円</a>を求めるのをどうしようかなー、連立方程式解くのめんどうだなあ・・・とtwitterでつぶやいたら、<a href="http://wonderfl.net/code/ad8b6c5010abdb44d3e34d3a7cd06a200b35175d">さくっと作って</a>いただきました。<br />
				大感謝です。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.planet-ape.net/blog/archives/853/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FDTでProgression4用のテンプレートを作ってみた</title>
		<link>http://www.planet-ape.net/blog/archives/830</link>
		<comments>http://www.planet-ape.net/blog/archives/830#comments</comments>
		<pubDate>Sun, 15 Nov 2009 16:41:12 +0000</pubDate>
		<dc:creator>fumix</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[actionscript3.0]]></category>
		<category><![CDATA[FDT]]></category>
		<category><![CDATA[Progression]]></category>

		<guid isPermaLink="false">http://www.planet-ape.net/?p=830</guid>
		<description><![CDATA[FlashDevelop（FD）にあるProgression4用のテンプレート機能拡張がうらやましかったので、FDTでも同様のことが出来るようなテンプレートを作ってみました。 asエディタをFDからFDTに移行してから、 [...]]]></description>
			<content:encoded><![CDATA[				<p>FlashDevelop（FD）にある<a href="http://flabaka.com/blog/?p=1658">Progression4用のテンプレート機能拡張</a>がうらやましかったので、FDTでも同様のことが出来るようなテンプレートを作ってみました。<br />
				<span id="more-830"></span><br />
				asエディタをFDからFDTに移行してから、Progressionコンテンツを作成するときはプロジェクト生成時に作られるTemplates内のそれぞれのasファイルをコピーして使っていました。<br />
				しかしながら、さっすがに面倒になってきたので<strong>FDTの強力なテンプレート機能</strong>を使ってProgression4用のテンプレートを作りました。</p>
				<h3>ダウンロード</h3>
				<p><a href='http://www.planet-ape.net/wp-content/uploads/2009/11/templates.zip'>templates.zip</a></p>
				<p>ファイルをダウンロードして解凍後、出来たxmlをPreferences＞Templates＞Importで読み込みます。<br />
				読み込まれるとTemplatesメニューの一覧に以下のように追加されます。<br />
				<img src="http://www.planet-ape.net/wp-content/uploads/2009/11/template.png" alt="template" title="template" width="463" height="326" class="alignnone size-full wp-image-832" /><br />
				反転してるところが追加されたテンプレートです。<br />
				Descriptionが日本語とかありえねえwwwとかNameが変wwwとかの場合はEditボタンを押せば変更できますので好きなモノに変えると良いです。</p>
				<p>FDと違って新規asファイル作成時にテンプレートを選ぶことはできません。<br />
				新規asファイルはクラスかインターフェイスしか作れませんので、クラスでとりあえずasファイルを作ります。<br />
				出来たクラスファイルから記述してあるモノをすべて消して、Nameで指定した文言（ex:pcastsprite）を打てば補完候補に出てきますので、選択するとProgressionのテンプレートがドバーっと書き出されます。<br />
				packageもclassもコントラクタも全部補完された形で生成されるので、非常に便利です。</p>
				<p>FDと同じように新規作成時に自動で生成できると良いのですが・・・Antという仕組み（マクロみたいなもん？）を使えば出来そうなのですがAntをまだ分かっていないのでそこまできませんでした。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.planet-ape.net/blog/archives/830/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>QuickBox2Dの練習その2</title>
		<link>http://www.planet-ape.net/blog/archives/826</link>
		<comments>http://www.planet-ape.net/blog/archives/826#comments</comments>
		<pubDate>Sun, 25 Oct 2009 11:02:18 +0000</pubDate>
		<dc:creator>fumix</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[actionscript3.0]]></category>
		<category><![CDATA[Box2D]]></category>
		<category><![CDATA[QuickBox2D]]></category>

		<guid isPermaLink="false">http://www.planet-ape.net/?p=826</guid>
		<description><![CDATA[いっぱい出してみた QuickObjectを配列に突っ込んでforループでまわしてるんですが、これで良いのかなあ？？ 無駄にソースが長いです。 package { import flash.events.MouseEve [...]]]></description>
			<content:encoded><![CDATA[				<p><a href="http://www.planet-ape.net/ga/ga001.html"><img src="http://www.planet-ape.net/wp-content/uploads/2009/10/box2d1.jpg" alt="box2d" title="box2d" width="540" height="230" class="alignnone size-full wp-image-827" /><br />
				いっぱい出してみた</a><br />
				<span id="more-826"></span><br />
				QuickObjectを配列に突っ込んでforループでまわしてるんですが、これで良いのかなあ？？<br />
				無駄にソースが長いです。</p>
				<pre class="brush: as">
package {
	import flash.events.MouseEvent;

	import Box2D.Common.Math.b2Vec2;
	import Box2D.Dynamics.Joints.b2RevoluteJoint;

	import com.actionsnippet.qbox.QuickBox2D;
	import com.actionsnippet.qbox.QuickObject;

	import flash.display.MovieClip;
	import flash.events.Event;
	import flash.text.TextField;
	import flash.text.TextFieldAutoSize;

	[SWF(width = 640, height = 480, backgroundColor = 0x222222, frameRate = 60)]

	/**
	 * @author fumix
	 */
	public class Main extends MovieClip {
		private var sim : QuickBox2D;
		private var objectArray:Array;
		private var debugTextField : TextField;

		/**
		 * コンストラクタ
		 */
		public function Main() {
			//ボタン設置
			var resetButtonText : TextField = new TextField();
			resetButtonText.selectable = false;
			resetButtonText.text = "リセット";
			resetButtonText.autoSize = TextFieldAutoSize.LEFT;
			resetButtonText.background = true;
			resetButtonText.backgroundColor = 0x666666;
			resetButtonText.border = true;
			resetButtonText.x = 20;
			resetButtonText.y = 20;
			addChild(resetButtonText);
			resetButtonText.addEventListener(MouseEvent.CLICK, onRestButtonClick);
			//テキストエリア設置
			debugTextField = new TextField();
			debugTextField.textColor = 0xFFFFFF;
			debugTextField.multiline = true;
			debugTextField.width = 200;
			debugTextField.height = 150;
			debugTextField.x = 20;
			debugTextField.y = 40;
			addChild(debugTextField);

			//QuickBox2D初期設定
			sim = new QuickBox2D(this);
			sim.setDefault({fillColor:0x000000, lineColor:0xCCCCCC});
			sim.createStageWalls();

			//オブジェクト10個生成
			objectArray = new Array();
			for (var i : int = 0; i < 10; i++) {
				objectArray.push(creatObject());
			}
			//各ジョイントの回転角度制限
			for (i = 0;i < objectArray.length;i++) {
				resetObject(objectArray[i]);
			}
			//各ジョイントの角速度設定
			for (i = 0;i < objectArray.length;i++) {
				setWalkDir(3,objectArray[i]);
			}

			//フレーム毎の動き
			addEventListener(Event.ENTER_FRAME, onLoop);
			//スタート
			sim.start();
			sim.mouseDrag();
		}

		private function onRestButtonClick(event : MouseEvent) : void {
			//各ジョイントの回転角度制限
			for (var i:int = 0;i < objectArray.length;i++) {
				resetObject(objectArray[i]);
			}
		}

		/**
		 * オブジェクトの生成
		 */
		private function creatObject() : Object {
			sim.setDefault({fillColor:0x000000, lineColor:0xCCCCCC});
			var legA : QuickObject = sim.addBox({x:20, y:5, width:1.5, height:0.3, groupIndex:-2});
			var legB : QuickObject = sim.addBox({x:20 + 1.3, y:5, width:1.5, height:0.3, groupIndex:-2});
			var legC : QuickObject = sim.addBox({x:20 + 1.3 * 2, y:5, width:1.5, height:0.3, groupIndex:-2});
			var legD : QuickObject = sim.addBox({x:20 + 1.3 * 3, y:5, width:1.5, height:0.3, groupIndex:-2});
			//ジョイントの設置
			sim.setDefault({type:"revolute"});
			var anchorX : Number = legA.x + (legB.x - legA.x) / 2;
			var anchorY : Number = legA.y;
			var revJointA : QuickObject = sim.addJoint({enableLimit:true, a:legA.body, b:legB.body, x1:anchorX, y1:anchorY, enableMotor:true, maxMotorTorque:80});

			anchorX = legB.x + (legC.x - legB.x) / 2;
			var revJointB : QuickObject = sim.addJoint({enableLimit:true, a:legB.body, b:legC.body, x1:anchorX, y1:anchorY, enableMotor:true, maxMotorTorque:80});

			anchorX = legC.x + (legD.x - legC.x) / 2;
			var revJointC : QuickObject = sim.addJoint({enableLimit:true, a:legC.body, b:legD.body, x1:anchorX, y1:anchorY, enableMotor:true, maxMotorTorque:80});

			return {a:legA,b:legB, c:legC, d:legD, jointA:revJointA, jointB:revJointB, jointC:revJointC};
		}

		private function resetObject(obj:Object) : void {
			var j : b2RevoluteJoint;
			var legA:QuickObject = obj.a;
			var legB:QuickObject = obj.b;
			var legC:QuickObject = obj.c;
			var legD:QuickObject = obj.d;
			var revJointA:QuickObject = obj.jointA;
			var revJointB:QuickObject = obj.jointB;
			var revJointC:QuickObject = obj.jointC;

			var angleA : Number = Math.PI * Math.random();
			j = revJointA.joint as b2RevoluteJoint;
			j.SetLimits(-angleA, angleA);

			var angleB : Number = Math.PI * Math.random();
			j = revJointB.joint as b2RevoluteJoint;
			j.SetLimits(-angleB, angleB);

			var angleC : Number = Math.PI * Math.random();
			j = revJointC.joint as b2RevoluteJoint;
			j.SetLimits(-angleC, angleC);

			debugTextField.htmlText = 'A:' + angleA * 180 / Math.PI;
			debugTextField.htmlText += 'B:' + angleB * 180 / Math.PI;
			debugTextField.htmlText += 'C:' + angleC * 180 / Math.PI;

			//速度をリセット
			var v : b2Vec2 = legA.body.GetLinearVelocity();
			v.Set();
			legA.body.SetLinearVelocity(v);
			legB.body.SetLinearVelocity(v);
			legC.body.SetLinearVelocity(v);
			legD.body.SetLinearVelocity(v);
			legA.setLoc(15, 5);
			legB.setLoc(15+1.3, 5);
			legC.setLoc(15+1.3*2, 5);
			legD.setLoc(15+1.3*3, 5);
		}

		private function onLoop(event : Event) : void {
			//setWalkDir(2);
			for (var i:int = 0;i < objectArray.length;i++) {
				repeatWalk(objectArray[i]);
			}
		}

		private function setWalkDir(dir : Number,obj:Object) : void {
			var j : b2RevoluteJoint;
			var revJointA:QuickObject = obj.jointA;
			var revJointB:QuickObject = obj.jointB;
			var revJointC:QuickObject = obj.jointC;

			j = revJointA.joint as b2RevoluteJoint;
			j.SetMotorSpeed(dir);
			j = revJointB.joint as b2RevoluteJoint;
			j.SetMotorSpeed(dir * -1);
			j = revJointC.joint as b2RevoluteJoint;
			j.SetMotorSpeed(dir);
		}

		private function repeatWalk(obj:Object) : void {
			var revJointA:QuickObject = obj.jointA;
			var revJointB:QuickObject = obj.jointB;
			var revJointC:QuickObject = obj.jointC;
			var j : b2RevoluteJoint;
			j = revJointA.joint as b2RevoluteJoint;
			if(j.GetLowerLimit() > j.GetJointAngle() || j.GetUpperLimit() < j.GetJointAngle()) j.SetMotorSpeed(j.GetMotorSpeed() * -1);
			j = revJointB.joint as b2RevoluteJoint;
			if(j.GetLowerLimit() > j.GetJointAngle() || j.GetUpperLimit() < j.GetJointAngle()) j.SetMotorSpeed(j.GetMotorSpeed() * -1);
			j = revJointC.joint as b2RevoluteJoint;
			if(j.GetLowerLimit() > j.GetJointAngle() || j.GetUpperLimit() < j.GetJointAngle()) j.SetMotorSpeed(j.GetMotorSpeed() * -1);
		}
	}
}
</pre>
				</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.planet-ape.net/blog/archives/826/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>QuickBox2Dの練習</title>
		<link>http://www.planet-ape.net/blog/archives/821</link>
		<comments>http://www.planet-ape.net/blog/archives/821#comments</comments>
		<pubDate>Sun, 18 Oct 2009 10:06:32 +0000</pubDate>
		<dc:creator>fumix</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[actionscript3.0]]></category>
		<category><![CDATA[Box2D]]></category>
		<category><![CDATA[QuickBox2D]]></category>

		<guid isPermaLink="false">http://www.planet-ape.net/?p=821</guid>
		<description><![CDATA[QuickBox2Dの練習 物理シミュレーションエンジンライブラリであるBox2DFlashAS3をもっと簡単に扱うことができるQuickBox2Dライブラリを使って、なんかうにょうにょと動く物体を作ってみました。 「リ [...]]]></description>
			<content:encoded><![CDATA[				<p><a href="http://www.planet-ape.net/ga/"><img src="http://www.planet-ape.net/wp-content/uploads/2009/10/box2d.jpg" alt="box2d" title="box2d" width="540" height="230" class="alignnone size-full wp-image-822" /><br />
				QuickBox2Dの練習</a><br />
				<span id="more-821"></span><br />
				物理シミュレーションエンジンライブラリである<a href="http://sourceforge.net/projects/box2dflash">Box2DFlashAS3</a>をもっと簡単に扱うことができる<a href="http://actionsnippet.com/?page_id=1391">QuickBox2D</a>ライブラリを使って、なんかうにょうにょと動く物体を作ってみました。<br />
				「リセット」ボタンをクリックすることで、関節（？）の可動範囲がランダムでかわります。<br />
				いったいこれは何なの？という感じですが、これはまだテスト段階ですので・・・。</p>
				<p><a href="http://blog.alumican.net/2009/06/28_021753">blog.alumican.net » Blog Archive » QuickBox2D はじめの第一歩</a><br />
				<a href="http://blog.alumican.net/tag/quickbox2d">blog.alumican.net » QuickBox2D</a><br />
				上記した2エントリーが非常に参考になりました。</p>
				<p>wonderflにもQuickBox2D採用されると物理シミュレーションもののFlashコンテンツが非常に手軽に作れるんですけどねー。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.planet-ape.net/blog/archives/821/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flash制作に欠かせない３つのツール：便乗</title>
		<link>http://www.planet-ape.net/blog/archives/813</link>
		<comments>http://www.planet-ape.net/blog/archives/813#comments</comments>
		<pubDate>Wed, 14 Oct 2009 18:06:21 +0000</pubDate>
		<dc:creator>fumix</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[actionscript3.0]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[FDT]]></category>
		<category><![CDATA[Fireworks]]></category>

		<guid isPermaLink="false">http://www.planet-ape.net/?p=813</guid>
		<description><![CDATA[カヤックさんのlevel0において、Flash制作に欠かせない３つのツールというお題で一斉エントリーがあったのに便乗して、私の使っているツールを紹介します。 すでにたくさんの方がエントリーをあげていて、かなり出遅れた感は [...]]]></description>
			<content:encoded><![CDATA[				<p><a href="http://level0.kayac.com/">カヤックさんのlevel0</a>において、Flash制作に欠かせない３つのツールというお題で一斉エントリーがあったのに便乗して、私の使っているツールを紹介します。<br />
				すでにたくさんの方がエントリーをあげていて、かなり出遅れた感はありますが・・・。<br />
				<span id="more-813"></span><br />
				<img src="http://www.planet-ape.net/wp-content/uploads/2009/10/0001.jpg" alt="0001" title="0001" width="540" height="230" class="alignnone size-full wp-image-814" /></p>
				<h3><a href="http://www.fdt.powerflasher.com/">1.FDT</a></h3>
				<p><a href="http://flashdevelop.jp/">FD</a>使って良いのは小学s(ry)ってことで、これだけ便乗エントリーが上がっていながら名前が出てこないマイナーエディタであるFDTを使っています。<br />
				有料なんで無償で提供されているFDに比べて敷居が高いというのは、まあわかります。<br />
				個人的にはFDより補完が強力だと思っていて、だいたい2〜3文字打ってからctrl+spaceか変数名等にカーソル合わせてctrl+1を押せばイベントリスナーだろうが変数だろうが何でもバッキバキに補完して追加してくれます。<br />
				おかげでas3が覚えられず、wonderfl等でソラでas書くことが全く出来ません。<br />
				FlexSDKを導入しないと単体ではswfをパブリッシュできないFDと違ってFDTはSDKも込みでインストールされ、単体でswfのパブリッシュまで出来るので、なにげにFDより開発環境を整えるのは楽だったりもします。<br />
				FDも良いですが、FDTも使ってみてほしいなーと思います。</p>
				<h3><a href="http://web.r-studio.jp/flash_command.html">2.「選択中のフレーム数表示・変更」コマンド</a></h3>
				<p>オールドタイプのFlasherなのでタイムラインが大好きだったりします。<br />
				演出等タイムラインでのアニメーションで行うことも多く、フレーム数を数えて揃えたりすることも良くします。<br />
				そのときに、今まではタイムライン上のフレーム数をモニタに指を当てて「1、2、3・・・」と数えてたりしたのですが非常に面倒くさく何かないかなあ？と思っていたときに（たしか）Twitter経由で教えてもらったjsflコマンドです。<br />
				jsflコマンドはこの他にも画面上に配置したムービークリップにプリフィックス付きの連番で名前をつけてくれるコマンドとかもよく使います。</p>
				<h3><a href="http://www.adobe.com/jp/products/fireworks/">3.Fireworks</a></h3>
				<p>ちなみにFlash共々まだCS3です（ぇー）<br />
				社内ではFirewoks使ってるのは自分一人で他のデザイナーは全員Photoshop使いで、肩身の狭い思いをしています。<br />
				世間的にもそんな感じですよね・・・adobeのサイトからもおすすめ製品から外されていますし・・・。<br />
				ビットマップもベクターも「同時に程々に」使え、変更・修正にも強く、Flashとの連携もPhotoshopよりはマシだし、web用の画像を生成するのにこれほど使い勝手のよいツールはないんじゃないかと思っているのですが、マイナーツールですか、そうですか。<br />
				<a href="http://www.adobe.com/jp/showcase/ficc.html">Adobe ケーススタディー : FICCが感じるAdobe CS4の良さ</a><br />
				上記のようなFireworks使いに希望の光を与えてくれるような記事もありますが、実際CS5以降ではどうなるんですかね・・・Flashの行く末なんかより、よっぽど心配なFireworksの行く末です。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.planet-ape.net/blog/archives/813/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>FDT(pure)のインストールについて for windows</title>
		<link>http://www.planet-ape.net/blog/archives/799</link>
		<comments>http://www.planet-ape.net/blog/archives/799#comments</comments>
		<pubDate>Fri, 10 Jul 2009 04:44:10 +0000</pubDate>
		<dc:creator>fumix</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[actionscript3.0]]></category>
		<category><![CDATA[editer]]></category>
		<category><![CDATA[FDT]]></category>
		<category><![CDATA[開発環境]]></category>

		<guid isPermaLink="false">http://www.planet-ape.net/?p=799</guid>
		<description><![CDATA[Powerflasher Solutions &#62;&#62; Pure Coding Comfort actionscriptエディタ（というか開発環境？）であるFDTをインストールして動かすまでの手順です。 忘れない [...]]]></description>
			<content:encoded><![CDATA[				<p><a href="http://fdt.powerflasher.com/">Powerflasher Solutions &gt;&gt; Pure Coding Comfort</a><br />
				actionscriptエディタ（というか開発環境？）であるFDTをインストールして動かすまでの手順です。<br />
				忘れないように自分用メモ。<br />
				ちなみにWindows（ｘｐ）です。<br />
				<span id="more-799"></span></p>
				<h3>起動できるようにする</h3>
				<p>上記したサイトからスタンドアローン版をダウンロードしてインストールしても、エラーってしまい起動できない（ぇー）ので、まずは起動できるようにインストールしたディレクトリ直下にある<strong>FDT 3.ini</strong>を編集。</p>
				<pre class="brush: xml">
-Xmx768m
　　↓
-Xmx512m
</pre>
				<p>※これで起動できるようになる。</p>
				<h3>Vector型等のplayer10からの機能を動かせるようにする。</h3>
				<p>適当なプロジェクトを作った後に、<strong>Project > Properties > FDT Build Path > Library</strong>と進み<strong>ChangeCoreLibrary</strong>を押す。<br />
				<strong>KnownLibraries</strong>から「～ _for_FP_10」を選ぶとVector型等の補完が効くようになる。<br />
				※ただし、コンパイルするとエラーになる。</p>
				<h3>コンパイルが通るようにする</h3>
				<p>インストールしたディレクトリ\plugins\com.powerflasher.fdt.shippedflex_3.3.0.4852_1000\flex\frameworks\flex-config.xmlを編集。<br />
				17行目付近</p>
				<pre class="brush: xml">
&lt;target-player&gt;9.0.124&lt;/target-player&gt;
       &#8595;
&lt;target-player&gt;10.0.0&lt;/target-player&gt;
</pre>
				<p>とする</p>
				<h3>コンパイル後にplayerが立ち上がるようにする。</h3>
				<p><a href="http://blog.cellfusion.jp/archives/693/">cellfusion blog » FDT 導入後に必要な作業</a><br />
				インストールしたディレクトリ\plugins\com.powerflasher.fdt.shippedflex_3.3.0.4852_1000\flex\bin\jvm.configを編集<br />
				31行目付近</p>
				<pre class="brush: xml">
java.args=-Xmx384m -Dsun.io.useCanonCaches=false
      ↓
java.args=-Xmx384m -Dsun.io.useCanonCaches=false -Duser.language=en -Duser.region=US
</pre>
				<p>終わり！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.planet-ape.net/blog/archives/799/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>【wonderfl】マトリックスを使った画像の変形</title>
		<link>http://www.planet-ape.net/blog/archives/795</link>
		<comments>http://www.planet-ape.net/blog/archives/795#comments</comments>
		<pubDate>Tue, 30 Jun 2009 09:07:05 +0000</pubDate>
		<dc:creator>fumix</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[actionscript3.0]]></category>
		<category><![CDATA[Matrix]]></category>
		<category><![CDATA[wonderfl]]></category>
		<category><![CDATA[画像変形]]></category>

		<guid isPermaLink="false">http://www.planet-ape.net/?p=795</guid>
		<description><![CDATA[てらこ23で発表したものの説明２ &#124; wonderfl build flash online 上記のwonderfl作品を格子状にして画像を変形できたら面白いんじゃないか？と考え、forkしてみました。 forked f [...]]]></description>
			<content:encoded><![CDATA[				<p><a href="http://wonderfl.net/code/e56e31f395e7f7457464b00111a6dab5aadc3c7f">てらこ23で発表したものの説明２ | wonderfl build flash online</a></p>
				<p>上記のwonderfl作品を格子状にして画像を変形できたら面白いんじゃないか？と考え、forkしてみました。</p>
				<div style="text-align:center;width:465px;"><iframe title="forked from: てらこ23で発表したものの説明２ - wonderfl build flash online" src="http://wonderfl.net/blogparts/fc55bf07b60f74d294fcc6329819f68434cdb5c1" width="465" height="490" style="border:1px black solid;"></iframe><a href="http://wonderfl.net/code/fc55bf07b60f74d294fcc6329819f68434cdb5c1" title="forked from: てらこ23で発表したものの説明２ - wonderfl build flash online">forked from: てらこ23で発表したものの説明２ &#8211; wonderfl build flash online</a></div>
				<p><span id="more-795"></span></p>
				<p>望んだとおりの動きになったことはなったのですが、ロジック的にちょっと不満があります。</p>
				<div style="text-align:center;width:465px;"><iframe title="forked from: forked from: てらこ23で発表したものの説明２ - wonderfl build flash online" src="http://wonderfl.net/blogparts/216c266c9167e99dd6496fd490e119f62fca0708" width="465" height="490" style="border:1px black solid;"></iframe><a href="http://wonderfl.net/code/216c266c9167e99dd6496fd490e119f62fca0708" title="forked from: forked from: てらこ23で発表したものの説明２ - wonderfl build flash online">forked from: forked from: てらこ23で発表したものの説明２ &#8211; wonderfl build flash online</a></div>
				<p>こちらは最初に思いついて組んだロジックなのですが、左側の黒い数字の部分が右の赤い数字とは違って、ばらばらになってしまっています。<br />
				２個目のやり方でもいけそうな気がするんですが・・・うーん。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.planet-ape.net/blog/archives/795/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

