<?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>Jinten Blog</title>
	<atom:link href="http://www.jinten.net/blog/feed" rel="self" type="application/rss+xml" />
	<link>http://www.jinten.net/blog</link>
	<description>Flex ActionScript 関連覚書などなど</description>
	<lastBuildDate>Tue, 17 Aug 2010 05:45:00 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>dachas０１１で発表してきました</title>
		<link>http://www.jinten.net/blog/archives/127</link>
		<comments>http://www.jinten.net/blog/archives/127#comments</comments>
		<pubDate>Tue, 17 Aug 2010 05:45:00 +0000</pubDate>
		<dc:creator>ken</dc:creator>
				<category><![CDATA[勉強会]]></category>

		<guid isPermaLink="false">http://www.jinten.net/blog/?p=127</guid>
		<description><![CDATA[8月7日、アップルストア一番町店にて開催された、仙台WEBクリエータ勉強会「dachas011」で発表をしてきました。 今回dachas011のテーマは、「仙台ムーブメントNOW」ということで仙台で活動している勉強会の一 [...]]]></description>
			<content:encoded><![CDATA[<p>8月7日、アップルストア一番町店にて開催された、<a href="http://dachas.jp/2010/08/dachas011-finish.html">仙台WEBクリエータ勉強会「dachas011」</a>で発表をしてきました。<br />
今回dachas011のテーマは、「仙台ムーブメントNOW」ということで仙台で活動している勉強会の一つとしてSendai.asを取り上げていただきました。</p>
<p>最近はAppleとAdobeでもにょもにょしているので、アップルストアでFlashの勉強会の話をするなんてアウェイ過ぎると思いましたが、いざ行ってみると暖かく迎えてもらえて本当に良かったです。</p>
<p>Sendai.asの紹介してきましたが、大事な事は、<br />
「Sendai.as」なんて名前だけど、仙台以外の人にもぜひ来てもらいたいよ、ということ。そもそも僕は仙台に住んでないですし。<br />
それから「Sendai.as」なんて名前だけど、ActionScriptだけじゃなく普通にFlashという範囲で活動しているよ、ということ。「Sendai.js」とかあるし、あんまり深く考えないで名づけちゃったけど、別にプログラマだけで集まろうということではないので。</p>
<p>あとは、勉強会といっても、何人かの発表があって、「おー」とか「わー」とか言いながらそれを見て、モチベーションあがって帰路につければそれでよし、くらいの感覚なので、軽い気持ちで参加してください。ということ。</p>
<p>僕以外の発表の方々の内容も、相当興味深いものだらけでした。<br />
仙台にも勉強会や面白そうな活動がたくさんありますね。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jinten.net/blog/archives/127/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sendai.as#02 無事終了しました</title>
		<link>http://www.jinten.net/blog/archives/120</link>
		<comments>http://www.jinten.net/blog/archives/120#comments</comments>
		<pubDate>Thu, 12 Aug 2010 20:23:50 +0000</pubDate>
		<dc:creator>ken</dc:creator>
				<category><![CDATA[Sendai.as]]></category>
		<category><![CDATA[勉強会]]></category>

		<guid isPermaLink="false">http://www.jinten.net/blog/?p=120</guid>
		<description><![CDATA[先週の8月6日、Sendai.as#02を開催しました。 発表者の方々、参加してくれた方々お疲れ様でした。 それから東北工業大学の皆様、多数の発表から会場まで諸々ありがとうございました。 今回は会場に東北工業大学のご協力 [...]]]></description>
			<content:encoded><![CDATA[<p>先週の8月6日、<a href="http://sendaias.appspot.com/">Sendai.as</a>#02を開催しました。<br />
発表者の方々、参加してくれた方々お疲れ様でした。<br />
それから<a href="http://www.life.tohtech.ac.jp/creative/laboratory/morozumi.html">東北工業大学の皆様</a>、多数の発表から会場まで諸々ありがとうございました。</p>
<p>今回は会場に東北工業大学のご協力いただき、また多数の学生発表者にも参加いただきました。学生の方々に関しては、研究発表とは少し雰囲気も違ったので緊張されてしまったかもしれませんが、もっとゆるい気持ちで望んでもらえるようこれからもっとがんばりたいと思います。</p>
<p>新しいもの、面白いもの、きっと東北にはまだまだたくさんあると思いますので、また次回開催の際には、ぜひ皆さんご参加ください。<br />
発表してみたいという方、随時募集中ですのでぜひご連絡を。<br />
発表だけでなく、こんなの取り上げて欲しいとか、何かあればとりあえずはご連絡を。</p>
<p>今回のSendai.asについて詳細は以下です。<br />
<span id="more-120"></span></p>
<h4>回覧板の記事を作成するAIRアプリケーションの開発</h4>
<p>一番手は東北工業大学大学院の松本さん。Flexアプリで地域の回覧板システムを作成するという研究をされているという事です。こういった形で、Flexのシステムが色々な場面で使われていく可能性がある、という意味でとても興味深い発表でした。</p>
<h4>デザインとロジックの分離</h4>
<p>二番手は富士通東北システムズの野呂さん。FlexにはMXMLがありデザインとロジックが分離できます･･･といいながら、実際にはなかなか分離できません。プログラマだけで作業しているなら気持ち的には分離できますが、デザイナーとプログラマで共同で作業するとなると、どうしてもmxml内にスクリプト(の一部)が混ざってしまったりします。<br />
そのあたりの解決法の一例を出していただきました。</p>
<h4>遠隔地での議論を支援するAIRアプリケーションの開発</h4>
<p>三番手は東北工業大学大学院の諏訪さん。付箋を使ってネットワーク上で議論を行うためのシステムを作成されています。とりあえず完成度が高いです。しかもプログラムは研究のために独学で学んだというので、さらに驚きです。</p>
<h4>WEBカメラを使ったUIで遊ぶ</h4>
<p>四番手は僕こと、陣天のブログ主です。<br />
今回は<a href="http://code.google.com/p/in-spirit/wiki/ASSURF">ASSURF</a>というライブラリを使って、顔認識を実装、デモしました。最終的には顔の方向やグーチョキパーのサインで画面を操作する、という目標だったのですが、そこまでいけず。残念でした。ASSURFはMITライセンスなのですが、内部のSURFというアルゴリズムには特許があるとか無いとか･･･。</p>
<h4>コーディネートを支援する情報機器でのシミュレートモデル開発</h4>
<p>五番手は東北工業大学の大内さんと星合さん。<br />
iPad的な端末を利用して、画面上で試着をする、自分のコーディネートをチェックするといったコンセプトモデルの発表をしていただきました。コンセプトなので全体はできていないようですが、一部がFlexで作成されています。スマートフォンの普及など考えれば、現実的にすぐあり得そうな内容です。</p>
<h4>Flash CatalystCS5の紹介</h4>
<p>大トリはアドビシステムズ株式会社の轟さん。<br />
FlashCatalystの機能紹介をしていただきました。野呂さんの発表もデザインとロジックの分離についてだったことを考えると、やはりこの分野が今熱いということでしょうか。<br />
わざわざ東京から仙台まで来ていただいて感謝です。</p>
<p>今回は6人の方に発表していただきました。<br />
ありがとうございました！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jinten.net/blog/archives/120/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sendai.as#02開催します。</title>
		<link>http://www.jinten.net/blog/archives/114</link>
		<comments>http://www.jinten.net/blog/archives/114#comments</comments>
		<pubDate>Tue, 20 Jul 2010 03:41:34 +0000</pubDate>
		<dc:creator>ken</dc:creator>
				<category><![CDATA[Sendai.as]]></category>
		<category><![CDATA[勉強会]]></category>

		<guid isPermaLink="false">http://www.jinten.net/blog/?p=114</guid>
		<description><![CDATA[タイトルのとおりですが、Sendai.as#02開催します。 前回のブログ記事「居酒屋プレゼン大会 2010 Springに出席」から数ヶ月。 アレヨアレヨと事は進み、5月末にSendai.as#01として勉強会をスター [...]]]></description>
			<content:encoded><![CDATA[<p>タイトルのとおりですが、Sendai.as#02開催します。</p>
<p>前回のブログ記事「<a href="http://www.jinten.net/blog/archives/107">居酒屋プレゼン大会 2010 Springに出席</a>」から数ヶ月。<br />
アレヨアレヨと事は進み、5月末にSendai.as#01として勉強会をスタートしました。<br />
今月7月頭には、<a href="http://tour.fxug.net/2010/sendai/">FlexUserGroup全国ツアーin仙台</a>でも発表をして来ました。</p>
<p>そして来月の頭、2010年8月6日にSendai.as#02として、第二回目の勉強会を開催します。<br />
様々な方々のご協力をいただきつつ、会場として東北工業大学長町キャンバスの一室を使わせていただくことになりました。社会人の方も学生の方も、奮ってご参加ください！<br />
内容はまだ調整中ですが、Adobeの轟さん、FlexUserGroup仙台の取りまとめをされている野呂さん、そして会場となっている東北工業大学の学生さんなど、バラエティあふれる発表になる予定です。<br />
詳細と参加受付はこちら(<a href="http://sendaias.appspot.com/">Sendai.as</a>)でお願いします。</p>
<p>このブログでは第一回目の話も何も書いていないので、Sendai.asの趣旨と目標など(今更ながら)少しだけ説明します。</p>
<p>Sendai.asは仙台のActionScript勉強会という意味です。<br />
まず「仙台」とありますが、これは東北の中でも一番人の集まりそうな場所ということでSendaiと名づけました。仙台の人限定ということではありませんので。山形や福島などなど仙台へ出られる方なら誰にでも参加してもらいたいと思っています。<br />
ちなみに次回8月6日は、<a href="http://www.sendaitanabata.com/">仙台七夕まつり</a>です。<br />
お祭りを見てからSendai.asに来てみても良いんじゃないでしょうか？>遠方の方</p>
<p>次に「as」とありますが、ActionScriptに限定しているわけではありません。<br />
プログラムの話も、Flash系のデザインの話も、プログラムとデザインの協業の話でも、基本的には何でもアリです。とりあえず何か発表できそうなネタのある方、ぜひご連絡ください。何か聞きたいネタのある方ご連絡ください。Flash/Flex/ActionScript/AIRなどなど、何かしら興味のある方はぜひご参加ください。</p>
<p>それから勉強会というとお堅い感じがするかもしれませんが、実際あまり堅い物では無いと思います。<br />
技術的な話、仕事/業務的な話もあると思いますが、その場で学んで理解して･･･なんてことはまずできません。こんなこともできるのか、とかあんなことをしてる人がいるのか、とか、参加してモチベーションが上がればそれで良しと思っています。<br />
それから、同じ業種だったり同じことに興味を持つ人達で繋がりを持ったり、懇親会したりとか。<br />
また、仕事だとなかなか難しいアソビゴコロを出す場としても活用してもらいたいと思います。</p>
<p>まだ第二回目ですし、あまり細かいことは定まっていませんが、ある程度定期的に開いていければと思っています。まずは次回Sendai.as#02です。ご都合よろしければご参加ください。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jinten.net/blog/archives/114/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>居酒屋プレゼン大会 2010 Springに出席</title>
		<link>http://www.jinten.net/blog/archives/107</link>
		<comments>http://www.jinten.net/blog/archives/107#comments</comments>
		<pubDate>Mon, 19 Apr 2010 09:23:18 +0000</pubDate>
		<dc:creator>ken</dc:creator>
				<category><![CDATA[日記]]></category>

		<guid isPermaLink="false">http://www.jinten.net/blog/?p=107</guid>
		<description><![CDATA[なんと、二年ぶりの更新。 ご無沙汰してます。 一度書かなくなると、こうも書かずに期間が空いてしまうとは恐ろしいことです。 先週末のことですが、居酒屋プレゼン大会 2010 Springに出席してきました。 今回は自分も発 [...]]]></description>
			<content:encoded><![CDATA[<p>なんと、二年ぶりの更新。<br />
ご無沙汰してます。</p>
<p>一度書かなくなると、こうも書かずに期間が空いてしまうとは恐ろしいことです。</p>
<p>先週末のことですが、<a href="http://tohoku-dev.jp/modules/news/article.php?storyid=44">居酒屋プレゼン大会 2010 Spring</a>に出席してきました。<br />
今回は自分も発表をしたので、これは良い機会。ブログに書いてみようと思い立ったわけです。</p>
<p>「居酒屋プレゼン大会 2010 Spring」は東北デベロッパーズコミュニティさん主催の飲み会です。<br />
飲み会ですが参加者は思いの丈を発表することができるという優れものです。<br />
しかも発表内容は基本自由という太っ腹です。</p>
<p>で、そんな懐の深いイベントで、<br />
「Sendai.asをやりませんか？」というタイトルで発表してきました。<br />
東京から宮城へ移って早1年。<br />
思い返せば、東京にはFlash/ActionScript系の勉強会がたくさんありました。<br />
宮城にだって有っても良いんじゃないですか？、と。</p>
<p>とは言え、近くにそういうFlash仲間もいないので完全手探りで口火を切ってきました。<br />
いかがですか？ActionScriptもやるよ、というプログラマの方。<br />
いかがですか？Flashも絡むよ、というデザイナの方。</p>
<p>それから、やったことは無いけどFlashに興味はあるよ、という方。<br />
やってみませんか？</p>
<p>それに、やったことも無いしFlashに興味も無いよ、という方。<br />
やってみたら楽しいかもしれませんよ？</p>
<p>とりあえず、一人ぼっちでさえなければやりたいと思っています。<br />
やりたいとかやりたくないとか何かあればとりあえずご連絡ください。</p>
<p>ご意見などはこのブログのコメント欄や僕宛でメールをもらえたら嬉しいです。<br />
もしくはツイッター「<del datetime="2010-04-27T21:31:19+00:00">jintenken</del>」へ。</p>
<blockquote><p>追記4/28(ツイッターのアカウントは　「jinten_ken」　でした･･･)</p></blockquote>
<p>ツイッターのアカウントはついさっき登録しました。<br />
使い方がまだわからないので、とりあえず「なう」ってつぶやきました。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jinten.net/blog/archives/107/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[as3]メモリリークをデバッグ(2)</title>
		<link>http://www.jinten.net/blog/archives/48</link>
		<comments>http://www.jinten.net/blog/archives/48#comments</comments>
		<pubDate>Fri, 18 Apr 2008 15:30:57 +0000</pubDate>
		<dc:creator>ken</dc:creator>
				<category><![CDATA[ActionScript3.0]]></category>

		<guid isPermaLink="false">http://www.jinten.net/blog/archives/48</guid>
		<description><![CDATA[メモリリークをデバッグ(1)の続き。 実際にInstanceWatcherクラスを使ってみます。 ソースのオリジナルは、l4lさんの記事から。 package &#123; import flash.display.Sp [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.jinten.net/blog/?p=47">メモリリークをデバッグ(1)</a>の続き。</p>
<p>実際にInstanceWatcherクラスを使ってみます。<br />
ソースのオリジナルは、<a href="http://kozy.heteml.jp/l4l/2008/04/as3dictionary.html">l4lさんの記事</a>から。<br />
<span id="more-48"></span></p>

<div class="wp_syntax"><div class="code"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #9900cc; font-weight: bold;">package</span> <span style="color: #000000;">&#123;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.display</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">Sprite</span><span style="color: #000066; font-weight: bold;">;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.events</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">Event</span><span style="color: #000066; font-weight: bold;">;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.events</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">MouseEvent</span><span style="color: #000066; font-weight: bold;">;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.system</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">System</span><span style="color: #000066; font-weight: bold;">;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.text</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">TextField</span><span style="color: #000066; font-weight: bold;">;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.utils</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">Dictionary</span><span style="color: #000066; font-weight: bold;">;</span>
&nbsp;
	<span style="color: #000000;">&#91;</span>SWF<span style="color: #000000;">&#40;</span><span style="color: #004993;">width</span>=<span style="color: #990000;">&quot;400&quot;</span><span style="color: #000066; font-weight: bold;">,</span> <span style="color: #004993;">height</span>=<span style="color: #990000;">&quot;300&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#93;</span>
	<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #9900cc; font-weight: bold;">class</span> <span style="color: #004993;">test</span> <span style="color: #0033ff; font-weight: bold;">extends</span> <span style="color: #004993;">Sprite</span> <span style="color: #000000;">&#123;</span>
&nbsp;
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #6699cc; font-weight: bold;">var</span> _tf<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">TextField</span> = <span style="color: #0033ff; font-weight: bold;">new</span> <span style="color: #004993;">TextField</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #6699cc; font-weight: bold;">var</span> iw<span style="color: #000066; font-weight: bold;">:</span>InstanceWatcher = InstanceWatcher<span style="color: #000066; font-weight: bold;">.</span>instance<span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #6699cc; font-weight: bold;">var</span> dic<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Dictionary</span><span style="color: #000066; font-weight: bold;">;</span>
&nbsp;
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> <span style="color: #004993;">test</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
			_tf<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">width</span> = <span style="color: #000000; font-weight:bold;">400</span><span style="color: #000066; font-weight: bold;">;</span>
			_tf<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">height</span> = <span style="color: #000000; font-weight:bold;">300</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #004993;">addChild</span><span style="color: #000000;">&#40;</span>_tf<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			dic = <span style="color: #0033ff; font-weight: bold;">new</span> <span style="color: #004993;">Dictionary</span><span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">true</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #004993;">stage</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">MouseEvent</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">CLICK</span><span style="color: #000066; font-weight: bold;">,</span> createObject<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #004993;">stage</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">Event</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">ENTER_FRAME</span><span style="color: #000066; font-weight: bold;">,</span> watch<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #000000;">&#125;</span>
&nbsp;
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> createObject<span style="color: #000000;">&#40;</span>event<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">MouseEvent</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #0033ff; font-weight: bold;">for</span> <span style="color: #000000;">&#40;</span><span style="color: #6699cc; font-weight: bold;">var</span> i<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">int</span> = <span style="color: #000000; font-weight:bold;">0</span><span style="color: #000066; font-weight: bold;">;</span> i <span style="color: #000066; font-weight: bold;">&lt;</span> <span style="color: #000000; font-weight:bold;">10</span><span style="color: #000066; font-weight: bold;">;</span> i<span style="color: #000066; font-weight: bold;">++</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				<span style="color: #6699cc; font-weight: bold;">var</span> sp<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Sprite</span> = <span style="color: #0033ff; font-weight: bold;">new</span> ExtSprite<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span> <span style="color: #009900; font-style: italic;">// GCされない</span>
				<span style="color: #009900; font-style: italic;">//dic[sp] = null;</span>
				dic<span style="color: #000000;">&#91;</span>sp<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">name</span><span style="color: #000000;">&#93;</span> = sp<span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #0033ff; font-weight: bold;">new</span> ExtSprite<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span> <span style="color: #009900; font-style: italic;">// こっちはGCされる</span>
			<span style="color: #000000;">&#125;</span>
			<span style="color: #009900; font-style: italic;">//System.gc();</span>
		<span style="color: #000000;">&#125;</span>
&nbsp;
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> watchDictionary<span style="color: #000000;">&#40;</span>event<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Event</span>=<span style="color: #0033ff; font-weight: bold;">null</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			_tf<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">text</span> = iw<span style="color: #000066; font-weight: bold;">.</span>getWatchString<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #000000;">&#125;</span>
	<span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span>
<span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.display</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">Sprite</span><span style="color: #000066; font-weight: bold;">;</span>
<span style="color: #9900cc; font-weight: bold;">class</span> ExtSprite <span style="color: #0033ff; font-weight: bold;">extends</span> <span style="color: #004993;">Sprite</span> <span style="color: #000000;">&#123;</span><span style="color: #000000;">&#125;</span></pre></div></div>

<p>ちょこっと書き換えてますが、追加したのはほぼ2行です。<br />
private var iw:InstanceWatcher = InstanceWatcher.instance;<br />
まずここでシングルトンインスタンスを生成しておきます。<br />
インスタンスを生成しないとサンプリングが開始されないので、<br />
ルートのクラスで、コンストラクタ前に初期化してあります。<br />
で、iw.getWatchString();で解析結果をStringで受け取る、と。これだけ。</p>
<p>プログラム実行直後の表示は、<br />
&#8212;&#8212;&#8212;-<br />
[class Object]:8<br />
[class String]:1<br />
[class Function]:2<br />
[class Event]:1<br />
[class EventDispatcher]:1<br />
[class Dictionary]:1<br />
[class ApplicationDomain]:1<br />
[class Class]:4<br />
[class LoaderInfo]:1<br />
&#8212;&#8212;&#8212;-<br />
こんな感じ。</p>
<p>で、クリックするたびに[class ExtSprite]の数が増えていきます。<br />
10分くらい待つと･･･見事半分がガベージコレクションに持っていかれて、[class ExtSprite]の数が半分に。</p>
<p>ちなみに、半分残ってしまうのは、この部分。
</pre>

<div class="wp_syntax"><div class="code"><pre class="actionscript3" style="font-family:monospace;">dic<span style="color: #000000;">&#91;</span>sp<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">name</span><span style="color: #000000;">&#93;</span> = sp<span style="color: #000066; font-weight: bold;">;</span></pre></div></div>

<p><a href="http://livedocs.adobe.com/flex/3_jp/langref/flash/utils/Dictionary.html#Dictionary()">リファレンス</a>を読むと、<br />
> <strong>オブジェクトキーに</strong> "弱" 参照を使用するように、～～<br />
Dictinaryが弱参照をするのは、オブジェクトキー指定したオブジェクトに対してですね。<br />
ん～、ややこしいな！Dictinary！</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript3" style="font-family:monospace;">dic<span style="color: #000000;">&#91;</span>sp<span style="color: #000000;">&#93;</span> = <span style="color: #0033ff; font-weight: bold;">null</span><span style="color: #000066; font-weight: bold;">;</span></pre></div></div>

<p>に書き換えてやれば[class ExtSprite]が全部ガベージコレクションされるようになります。</p>
<p>とりあえず、flash.sampler.*系のクラス&#038;メソッドは、<br />
<strong>Flash Player デバッガ版の Update 3 以降が必要</strong>という制約はあるものの、<br />
シングルトンインスタンスの生成と、出力の最低限2行を既存のプログラムに書き加えてやれば、<br />
プログラム全体のインスタンス存在状況を見れる(はず)ということで、どうでしょうか？</p>
<p>あとは、出力周りとか得られる情報の種類とかいろいろ直さないとかな･･･。<br />
こんくらいでもsparkプロジェクトとかに混ぜてもらえるかなぁ･･･。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jinten.net/blog/archives/48/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>[as3]メモリリークをデバッグ(1)</title>
		<link>http://www.jinten.net/blog/archives/47</link>
		<comments>http://www.jinten.net/blog/archives/47#comments</comments>
		<pubDate>Fri, 18 Apr 2008 15:22:15 +0000</pubDate>
		<dc:creator>ken</dc:creator>
				<category><![CDATA[ActionScript3.0]]></category>

		<guid isPermaLink="false">http://www.jinten.net/blog/archives/47</guid>
		<description><![CDATA[あー、ずいぶん期間を空けてしまった。一度書くのをサボると、そのうち忘れていくんだよな~･･･。 l4lさんの記事などでも取り上げられてるんですが、 メモリやガベージコレクションの動きを監視したい！というような話です。 実 [...]]]></description>
			<content:encoded><![CDATA[<p>あー、ずいぶん期間を空けてしまった。一度書くのをサボると、そのうち忘れていくんだよな~･･･。</p>
<p><a href="http://kozy.heteml.jp/l4l/2008/04/as3dictionary.html">l4lさんの記事</a>などでも取り上げられてるんですが、<br />
メモリやガベージコレクションの動きを監視したい！というような話です。</p>
<p>実行中のある瞬間に、いったいいくつのインスタンスが存在しているのかを確認しながら、<br />
メモリリークを防ぎたい。と、多くの人が思っているはずです。多分。</p>
<p>で、上の<a href="http://kozy.heteml.jp/l4l/2008/04/as3dictionary.html">l4lさんの記事</a>やその大元の<a href="http://fladdict.net/blog/2008/04/as3_19.html">fladdictさんの記事</a>の考えを元に、<br />
こんなクラスを作って見ました。</p>
<p><span id="more-47"></span></p>

<div class="wp_syntax"><div class="code"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #9900cc; font-weight: bold;">package</span>  <span style="color: #000000;">&#123;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> flash<span style="color: #000066; font-weight: bold;">.</span>sampler<span style="color: #000066; font-weight: bold;">.</span>NewObjectSample<span style="color: #000066; font-weight: bold;">;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.utils</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">Dictionary</span><span style="color: #000066; font-weight: bold;">;</span>
&nbsp;
	<span style="color: #3f5fbf;">/**
	* @author ken - Jinten.net
	* @version 0.2
	*/</span>
	<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #9900cc; font-weight: bold;">class</span> InstanceWatcher <span style="color: #000000;">&#123;</span>
&nbsp;
		<span style="color: #0033ff; font-weight: bold;">private</span> static <span style="color: #6699cc; font-weight: bold;">var</span> _instance<span style="color: #000066; font-weight: bold;">:</span>InstanceWatcher = <span style="color: #0033ff; font-weight: bold;">null</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #0033ff; font-weight: bold;">public</span> static <span style="color: #339966; font-weight: bold;">function</span> <span style="color: #0033ff; font-weight: bold;">get</span> instance<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span>InstanceWatcher <span style="color: #000000;">&#123;</span>
			<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>_instance == <span style="color: #0033ff; font-weight: bold;">null</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				_instance = <span style="color: #0033ff; font-weight: bold;">new</span> InstanceWatcher<span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">new</span> SingletonEssence<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #000000;">&#125;</span>
			<span style="color: #0033ff; font-weight: bold;">return</span> _instance<span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #000000;">&#125;</span>
&nbsp;
		<span style="color: #0033ff; font-weight: bold;">private</span> static <span style="color: #6699cc; font-weight: bold;">var</span> _dict<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Dictionary</span> = <span style="color: #0033ff; font-weight: bold;">new</span> <span style="color: #004993;">Dictionary</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> static <span style="color: #6699cc; font-weight: bold;">var</span> _instances<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Object</span> = <span style="color: #0033ff; font-weight: bold;">new</span> <span style="color: #004993;">Object</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
&nbsp;
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> InstanceWatcher<span style="color: #000000;">&#40;</span>essense<span style="color: #000066; font-weight: bold;">:</span>SingletonEssence<span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>essense == <span style="color: #0033ff; font-weight: bold;">null</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				<span style="color: #0033ff; font-weight: bold;">throw</span> <span style="color: #004993;">Error</span><span style="color: #000000;">&#40;</span><span style="color: #990000;">'use InstanceWatcher.instance !!'</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #000000;">&#125;</span>
			startSampling<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #000000;">&#125;</span>
&nbsp;
		<span style="color: #0033ff; font-weight: bold;">public</span> static <span style="color: #339966; font-weight: bold;">function</span> startSampling<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			flash<span style="color: #000066; font-weight: bold;">.</span>sampler<span style="color: #000066; font-weight: bold;">.</span>startSampling<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #000000;">&#125;</span>
&nbsp;
		<span style="color: #0033ff; font-weight: bold;">public</span> static <span style="color: #339966; font-weight: bold;">function</span> pauseSampling<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			flash<span style="color: #000066; font-weight: bold;">.</span>sampler<span style="color: #000066; font-weight: bold;">.</span>pauseSampling<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #000000;">&#125;</span>
&nbsp;
		<span style="color: #0033ff; font-weight: bold;">public</span> static <span style="color: #339966; font-weight: bold;">function</span> stopSampling<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			flash<span style="color: #000066; font-weight: bold;">.</span>sampler<span style="color: #000066; font-weight: bold;">.</span>stopSampling<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #000000;">&#125;</span>
&nbsp;
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> getWatchString<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">String</span> <span style="color: #000000;">&#123;</span>
			watch<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
&nbsp;
			<span style="color: #6699cc; font-weight: bold;">var</span> str<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">String</span> = <span style="color: #990000;">''</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #0033ff; font-weight: bold;">for</span> <span style="color: #000000;">&#40;</span><span style="color: #6699cc; font-weight: bold;">var</span> <span style="color: #004993;">type</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">String</span> <span style="color: #0033ff; font-weight: bold;">in</span> _dict<span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				<span style="color: #6699cc; font-weight: bold;">var</span> <span style="color: #004993;">d</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Dictionary</span> = _dict<span style="color: #000000;">&#91;</span><span style="color: #004993;">type</span><span style="color: #000000;">&#93;</span> <span style="color: #0033ff; font-weight: bold;">as</span> <span style="color: #004993;">Dictionary</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #6699cc; font-weight: bold;">var</span> num<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">int</span> = <span style="color: #000000; font-weight:bold;">0</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #0033ff; font-weight: bold;">for</span> <span style="color: #000000;">&#40;</span><span style="color: #6699cc; font-weight: bold;">var</span> inst<span style="color: #000066; font-weight: bold;">:*</span> <span style="color: #0033ff; font-weight: bold;">in</span> <span style="color: #004993;">d</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
					num<span style="color: #000066; font-weight: bold;">++;</span>
				<span style="color: #000000;">&#125;</span>
				str <span style="color: #000066; font-weight: bold;">+</span>= <span style="color: #004993;">type</span> <span style="color: #000066; font-weight: bold;">+</span> <span style="color: #990000;">':'</span> <span style="color: #000066; font-weight: bold;">+</span> num <span style="color: #000066; font-weight: bold;">+</span> <span style="color: #990000;">'<span style="">\n</span>'</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #000000;">&#125;</span>
			<span style="color: #0033ff; font-weight: bold;">return</span> str<span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #000000;">&#125;</span>
&nbsp;
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> watch<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			pauseSampling<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> samples<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Object</span> = flash<span style="color: #000066; font-weight: bold;">.</span>sampler<span style="color: #000066; font-weight: bold;">.</span>getSamples<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
&nbsp;
			<span style="color: #0033ff; font-weight: bold;">for</span> <span style="color: #0033ff; font-weight: bold;">each</span><span style="color: #000000;">&#40;</span><span style="color: #6699cc; font-weight: bold;">var</span> sample<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Object</span> <span style="color: #0033ff; font-weight: bold;">in</span> samples<span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>sample <span style="color: #0033ff; font-weight: bold;">is</span> NewObjectSample<span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
					<span style="color: #6699cc; font-weight: bold;">var</span> nos<span style="color: #000066; font-weight: bold;">:</span>NewObjectSample = NewObjectSample<span style="color: #000000;">&#40;</span>sample<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
					<span style="color: #6699cc; font-weight: bold;">var</span> <span style="color: #004993;">type</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">String</span> = <span style="color: #004993;">String</span><span style="color: #000000;">&#40;</span>nos<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">type</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
					<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>nos<span style="color: #000066; font-weight: bold;">.</span>object <span style="color: #000066; font-weight: bold;">!</span>= <span style="color: #0033ff; font-weight: bold;">undefined</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
						<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #000066; font-weight: bold;">!</span><span style="color: #000000;">&#40;</span>_dict<span style="color: #000000;">&#91;</span><span style="color: #004993;">type</span><span style="color: #000000;">&#93;</span> <span style="color: #0033ff; font-weight: bold;">is</span> <span style="color: #004993;">Dictionary</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
							_dict<span style="color: #000000;">&#91;</span><span style="color: #004993;">type</span><span style="color: #000000;">&#93;</span> = <span style="color: #0033ff; font-weight: bold;">new</span> <span style="color: #004993;">Dictionary</span><span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">true</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
						<span style="color: #000000;">&#125;</span>
						_dict<span style="color: #000000;">&#91;</span><span style="color: #004993;">type</span><span style="color: #000000;">&#93;</span><span style="color: #000000;">&#91;</span>nos<span style="color: #000066; font-weight: bold;">.</span>object<span style="color: #000000;">&#93;</span> = <span style="color: #0033ff; font-weight: bold;">null</span><span style="color: #000066; font-weight: bold;">;</span>
					<span style="color: #000000;">&#125;</span>
				<span style="color: #000000;">&#125;</span>
			<span style="color: #000000;">&#125;</span>
			flash<span style="color: #000066; font-weight: bold;">.</span>sampler<span style="color: #000066; font-weight: bold;">.</span>clearSamples<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			startSampling<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #000000;">&#125;</span>
	<span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span>
&nbsp;
<span style="color: #9900cc; font-weight: bold;">class</span> SingletonEssence <span style="color: #000000;">&#123;</span> <span style="color: #000000;">&#125;</span></pre></div></div>

<p>内部を軽く説明すると、</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript3" style="font-family:monospace;">flash<span style="color: #000066; font-weight: bold;">.</span>sampler<span style="color: #000066; font-weight: bold;">.</span>startSampling<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span></pre></div></div>

<p>コンストラクタのこの行でサンプリングを開始しています。<br />
watch()メソッド内の</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript3" style="font-family:monospace;">flash<span style="color: #000066; font-weight: bold;">.</span>sampler<span style="color: #000066; font-weight: bold;">.</span>getSamples<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span></pre></div></div>

<p>でサンプリングされたオブジェクトが返ってきます。<br />
この中にあるNewObjectSampleというオブジェクトが混ざっていますが、<br />
これは、サンプリング開始以後に(何らかの)オブジェクトが生成されたことを示すオブジェクトです。<br />
しかも、このNewObjectSampleのobjectプロパティには生成されたオブジェクトへの参照があり、<br />
すでにガベージコレクションされている場合には、undefinedとなっています。<br />
これを利用して、プログラム内のインスタンスの数を数えよう！という試みです。</p>
<p>長くなったので、<a href="http://www.jinten.net/blog/?p=48">メモリリークをデバッグ(2)</a>へ続く。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jinten.net/blog/archives/47/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>[as3][言語解析]ActionScript3.0で形態素解析もどき(1)</title>
		<link>http://www.jinten.net/blog/archives/46</link>
		<comments>http://www.jinten.net/blog/archives/46#comments</comments>
		<pubDate>Mon, 18 Feb 2008 08:10:10 +0000</pubDate>
		<dc:creator>ken</dc:creator>
				<category><![CDATA[ActionScript3.0]]></category>
		<category><![CDATA[形態素解析]]></category>

		<guid isPermaLink="false">http://www.jinten.net/blog/archives/46</guid>
		<description><![CDATA[最近は3dとか物理エンジンとか、グラフィックっぽいことばかりだったので、 少し違うことを。 JavaScript で形態素解析もどき このあたりを参考に形態素解析もどきで遊んでみます。 まずは、参考サイトのように、日本語 [...]]]></description>
			<content:encoded><![CDATA[<p>最近は3dとか物理エンジンとか、グラフィックっぽいことばかりだったので、<br />
少し違うことを。</p>
<p><a href="http://ablog.seesaa.net/article/20969848.html">JavaScript で形態素解析もどき</a><br />
このあたりを参考に形態素解析もどきで遊んでみます。<br />
<span id="more-46"></span><br />
まずは、参考サイトのように、日本語の文章を、漢字やひらがな、カタカナで分割してみます。</p>
<p>と、言ってもほんの2行ですね。</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #6699cc; font-weight: bold;">var</span> pattern<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">RegExp</span> = <span style="color: #009966; font-style: italic;">/([一-龠々〆ヵヶ]+)|([ぁ-んー－―]+)|([ァ-ヴー－―]+)|([a-zA-ZａｚＡ-Ｚ]+)|([0-9０-９.]+)|[、。！!？?()（）「」『』-]/g</span><span style="color: #000066; font-weight: bold;">;</span>
output_text = input_text<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">match</span><span style="color: #000000;">&#40;</span>pattern<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">join</span><span style="color: #000000;">&#40;</span><span style="color: #990000;">&quot; | &quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span></pre></div></div>

<p>正規表現で分割して、とりあえず今回は「|」で区切ってみました。<br />
ちなみに文章のサンプルは<a href="http://ja.wikipedia.org/wiki/ActionScript">WikipediaからActionscriptの項</a>です。<br />
「原文」のテキストエリアに文章を入れて、「解析」ボタンを押すと文章をパースします。</p>
<p><script type="text/javascript" src="http://www.jinten.net/samples/js/swfobject.js"></script></p>
<div id="flashcontent"></div>
<p><script type="text/javascript">
  // < ![CDATA[
    var so = new SWFObject("/samples/jparse_sample1.swf", "jparse_sample", "500", "400", "9", "#FFFFFF");
    so.write("flashcontent");
  // ]]&gt;
</script><br />
今日はここまで。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jinten.net/blog/archives/46/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[as3][FOAM]初めてのFOAM(2) 多角形の表示</title>
		<link>http://www.jinten.net/blog/archives/43</link>
		<comments>http://www.jinten.net/blog/archives/43#comments</comments>
		<pubDate>Tue, 12 Feb 2008 01:47:50 +0000</pubDate>
		<dc:creator>ken</dc:creator>
				<category><![CDATA[ActionScript3.0]]></category>
		<category><![CDATA[ASライブラリ]]></category>

		<guid isPermaLink="false">http://www.jinten.net/blog/archives/43</guid>
		<description><![CDATA[前回記事 初めてのFOAMの続きです。 今回は多角形の表示をします。 FOAMの基本的な使い方は前回の記事を参考にしてください。 var rigid:RigidBody = new RigidBody&#40;&#91; [...]]]></description>
			<content:encoded><![CDATA[<p>前回記事 <a href="http://www.jinten.net/blog/archives/41">初めてのFOAM</a>の続きです。</p>
<p>今回は多角形の表示をします。<br />
FOAMの基本的な使い方は前回の記事を参考にしてください。</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #6699cc; font-weight: bold;">var</span> rigid<span style="color: #000066; font-weight: bold;">:</span>RigidBody = <span style="color: #0033ff; font-weight: bold;">new</span> RigidBody<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#91;</span>X位置<span style="color: #000000;">&#93;</span><span style="color: #000066; font-weight: bold;">,</span> <span style="color: #000000;">&#91;</span>Y位置<span style="color: #000000;">&#93;</span><span style="color: #000066; font-weight: bold;">,</span> <span style="color: #000000;">&#91;</span>サイズ<span style="color: #000000;">&#93;</span><span style="color: #000066; font-weight: bold;">,</span> <span style="color: #000000;">&#91;</span>頂点の座標配列<span style="color: #000000;">&#93;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
foam<span style="color: #000066; font-weight: bold;">.</span>addElement<span style="color: #000000;">&#40;</span>rigid<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span></pre></div></div>

<p>これが多角形を表示するコードです。<br />
メソッドの引数はほかにもあるのでいろいろ調節はできるようですが、<br />
まだ調査不足のためそのあたりはいずれ･･･。</p>
<p>今回のサンプルでのコードとしてはこのように書いています。</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #009900; font-style: italic;">// 座標をランダムに決定。0-300で。(今回はswfのサイズが300×300なので)</span>
<span style="color: #6699cc; font-weight: bold;">var</span> rnd_x<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span> = <span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">random</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #000066; font-weight: bold;">*</span> <span style="color: #000000; font-weight:bold;">300</span><span style="color: #000066; font-weight: bold;">;</span>
<span style="color: #6699cc; font-weight: bold;">var</span> rnd_y<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span> = <span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">random</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #000066; font-weight: bold;">*</span> <span style="color: #000000; font-weight:bold;">300</span><span style="color: #000066; font-weight: bold;">;</span>
<span style="color: #009900; font-style: italic;">// 多角形のサイズをランダムに決定。20-60。この数値は適当。</span>
<span style="color: #6699cc; font-weight: bold;">var</span> rnd_size<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span> = <span style="color: #000000; font-weight:bold;">20</span> <span style="color: #000066; font-weight: bold;">+</span> <span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">random</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #000066; font-weight: bold;">*</span> <span style="color: #000000; font-weight:bold;">40</span><span style="color: #000066; font-weight: bold;">;</span>
<span style="color: #009900; font-style: italic;">// 頂点数をランダムに決定。2-9。頂点数2なら直線、3なら三角形に。</span>
<span style="color: #6699cc; font-weight: bold;">var</span> rnd_num_vertices<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span> = <span style="color: #000000; font-weight:bold;">1</span> <span style="color: #000066; font-weight: bold;">+</span> <span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">ceil</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">random</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #000066; font-weight: bold;">*</span> <span style="color: #000000; font-weight:bold;">8</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
<span style="color: #009900; font-style: italic;">// createSymmetricPolygonメソッドで頂点座標の配列を返す。</span>
<span style="color: #6699cc; font-weight: bold;">var</span> rigid_arr<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Array</span> = ShapeUtil<span style="color: #000066; font-weight: bold;">.</span>createSymmetricPolygon<span style="color: #000000;">&#40;</span>rnd_num_vertices<span style="color: #000066; font-weight: bold;">,</span> rnd_size<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
&nbsp;
<span style="color: #009900; font-style: italic;">// RigidBodyインスタンスを生成し、foamエンジンへ追加。</span>
<span style="color: #6699cc; font-weight: bold;">var</span> rigid<span style="color: #000066; font-weight: bold;">:</span>RigidBody = <span style="color: #0033ff; font-weight: bold;">new</span> RigidBody<span style="color: #000000;">&#40;</span>rnd_x<span style="color: #000066; font-weight: bold;">,</span> rnd_y<span style="color: #000066; font-weight: bold;">,</span> rnd_size<span style="color: #000066; font-weight: bold;">,</span> rigid_arr<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
foam<span style="color: #000066; font-weight: bold;">.</span>addElement<span style="color: #000000;">&#40;</span>rigid<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span></pre></div></div>

<p>簡単ですね。<br />
ただ、ちょっと重いかな･･･。まだバージョン0.1.01だもんなぁ･･･。</p>
<p><a href="http://www.jinten.net/blog/?page_id=44">デモはこちら</a>。<br />
<img src='http://www.jinten.net/blog/wp-content/uploads/2008/02/foam_sample2.png' alt='screenshot' /></p>
<p>ソースコード全体は以下。<br />
<span id="more-43"></span></p>

<div class="wp_syntax"><div class="code"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #9900cc; font-weight: bold;">package</span>  <span style="color: #000000;">&#123;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.display</span><span style="color: #000066; font-weight: bold;">.*;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.events</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">MouseEvent</span><span style="color: #000066; font-weight: bold;">;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> org<span style="color: #000066; font-weight: bold;">.</span>generalrelativity<span style="color: #000066; font-weight: bold;">.</span>foam<span style="color: #000066; font-weight: bold;">.</span>dynamics<span style="color: #000066; font-weight: bold;">.</span>element<span style="color: #000066; font-weight: bold;">.</span>body<span style="color: #000066; font-weight: bold;">.*;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> org<span style="color: #000066; font-weight: bold;">.</span>generalrelativity<span style="color: #000066; font-weight: bold;">.</span>foam<span style="color: #000066; font-weight: bold;">.</span>dynamics<span style="color: #000066; font-weight: bold;">.</span>enum<span style="color: #000066; font-weight: bold;">.</span>Simplification<span style="color: #000066; font-weight: bold;">;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> org<span style="color: #000066; font-weight: bold;">.</span>generalrelativity<span style="color: #000066; font-weight: bold;">.</span>foam<span style="color: #000066; font-weight: bold;">.</span>dynamics<span style="color: #000066; font-weight: bold;">.</span>force<span style="color: #000066; font-weight: bold;">.</span>Gravity<span style="color: #000066; font-weight: bold;">;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> org<span style="color: #000066; font-weight: bold;">.</span>generalrelativity<span style="color: #000066; font-weight: bold;">.</span>foam<span style="color: #000066; font-weight: bold;">.</span>Foam<span style="color: #000066; font-weight: bold;">;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> org<span style="color: #000066; font-weight: bold;">.</span>generalrelativity<span style="color: #000066; font-weight: bold;">.</span>foam<span style="color: #000066; font-weight: bold;">.</span>math<span style="color: #000066; font-weight: bold;">.</span>Vector<span style="color: #000066; font-weight: bold;">;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> org<span style="color: #000066; font-weight: bold;">.</span>generalrelativity<span style="color: #000066; font-weight: bold;">.</span>foam<span style="color: #000066; font-weight: bold;">.</span>util<span style="color: #000066; font-weight: bold;">.</span>ShapeUtil<span style="color: #000066; font-weight: bold;">;</span>
&nbsp;
	<span style="color: #000000;">&#91;</span>SWF<span style="color: #000000;">&#40;</span><span style="color: #004993;">width</span>=<span style="color: #990000;">&quot;300&quot;</span><span style="color: #000066; font-weight: bold;">,</span> <span style="color: #004993;">height</span>=<span style="color: #990000;">&quot;300&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#93;</span>
	<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #9900cc; font-weight: bold;">class</span> FoamSample1 <span style="color: #0033ff; font-weight: bold;">extends</span> <span style="color: #004993;">Sprite</span> <span style="color: #000000;">&#123;</span>
&nbsp;
		<span style="color: #0033ff; font-weight: bold;">private</span> const W<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span> = <span style="color: #000000; font-weight:bold;">300</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> const H<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span> = <span style="color: #000000; font-weight:bold;">300</span><span style="color: #000066; font-weight: bold;">;</span>
&nbsp;
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #6699cc; font-weight: bold;">var</span> foam<span style="color: #000066; font-weight: bold;">:</span>Foam<span style="color: #000066; font-weight: bold;">;</span>
&nbsp;
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> FoamSample1<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #004993;">stage</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">scaleMode</span> = <span style="color: #004993;">StageScaleMode</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">NO_SCALE</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #004993;">stage</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">align</span> = <span style="color: #004993;">StageAlign</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">BOTTOM</span><span style="color: #000066; font-weight: bold;">;</span>
&nbsp;
			<span style="color: #009900; font-style: italic;">//FOAMインスタンスの生成</span>
			foam = <span style="color: #0033ff; font-weight: bold;">new</span> Foam<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #004993;">addChild</span><span style="color: #000000;">&#40;</span>foam<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
&nbsp;
			<span style="color: #009900; font-style: italic;">//オブジェクトのドラッグ有効化</span>
			foam<span style="color: #000066; font-weight: bold;">.</span>useMouseDragger<span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">true</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
&nbsp;
			foam<span style="color: #000066; font-weight: bold;">.</span>addGlobalForceGenerator<span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">new</span> Gravity<span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">new</span> Vector<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">0</span><span style="color: #000066; font-weight: bold;">,</span> <span style="color: #000000; font-weight:bold;">0.3</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
&nbsp;
			<span style="color: #6699cc; font-weight: bold;">var</span> wall_arr<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Array</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #009900; font-style: italic;">//ground</span>
			wall_arr = ShapeUtil<span style="color: #000066; font-weight: bold;">.</span>createRectangle<span style="color: #000000;">&#40;</span>W<span style="color: #000066; font-weight: bold;">,</span> <span style="color: #000000; font-weight:bold;">20</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			foam<span style="color: #000066; font-weight: bold;">.</span>addElement<span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">new</span> RigidBody<span style="color: #000000;">&#40;</span>W<span style="color: #000066; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">2</span><span style="color: #000066; font-weight: bold;">,</span> <span style="color: #000000; font-weight:bold;">0</span><span style="color: #000066; font-weight: bold;">,</span> Simplification<span style="color: #000066; font-weight: bold;">.</span>INFINITE_MASS<span style="color: #000066; font-weight: bold;">,</span> wall_arr<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			foam<span style="color: #000066; font-weight: bold;">.</span>addElement<span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">new</span> RigidBody<span style="color: #000000;">&#40;</span>W<span style="color: #000066; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">2</span><span style="color: #000066; font-weight: bold;">,</span> H<span style="color: #000066; font-weight: bold;">,</span> Simplification<span style="color: #000066; font-weight: bold;">.</span>INFINITE_MASS<span style="color: #000066; font-weight: bold;">,</span> wall_arr<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #009900; font-style: italic;">//wall</span>
			wall_arr = ShapeUtil<span style="color: #000066; font-weight: bold;">.</span>createRectangle<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">20</span><span style="color: #000066; font-weight: bold;">,</span> H<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			foam<span style="color: #000066; font-weight: bold;">.</span>addElement<span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">new</span> RigidBody<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">0</span><span style="color: #000066; font-weight: bold;">,</span> H<span style="color: #000066; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">2</span><span style="color: #000066; font-weight: bold;">,</span> Simplification<span style="color: #000066; font-weight: bold;">.</span>INFINITE_MASS<span style="color: #000066; font-weight: bold;">,</span> wall_arr<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			foam<span style="color: #000066; font-weight: bold;">.</span>addElement<span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">new</span> RigidBody<span style="color: #000000;">&#40;</span>W<span style="color: #000066; font-weight: bold;">,</span> H<span style="color: #000066; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">2</span><span style="color: #000066; font-weight: bold;">,</span> Simplification<span style="color: #000066; font-weight: bold;">.</span>INFINITE_MASS<span style="color: #000066; font-weight: bold;">,</span> wall_arr<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
&nbsp;
			<span style="color: #004993;">stage</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">MouseEvent</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">CLICK</span><span style="color: #000066; font-weight: bold;">,</span> clickHandler<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
&nbsp;
			foam<span style="color: #000066; font-weight: bold;">.</span>addElement<span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">new</span> Circle<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">150</span><span style="color: #000066; font-weight: bold;">,</span> <span style="color: #000000; font-weight:bold;">100</span><span style="color: #000066; font-weight: bold;">,</span> <span style="color: #000000; font-weight:bold;">20</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			foam<span style="color: #000066; font-weight: bold;">.</span>simulate<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #000000;">&#125;</span>
&nbsp;
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> clickHandler<span style="color: #000000;">&#40;</span>e<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">MouseEvent</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #009900; font-style: italic;">// add Rigid</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> rnd_x<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span> = <span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">random</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #000066; font-weight: bold;">*</span> <span style="color: #000000; font-weight:bold;">300</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> rnd_y<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span> = <span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">random</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #000066; font-weight: bold;">*</span> <span style="color: #000000; font-weight:bold;">300</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> rnd_size<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span> = <span style="color: #000000; font-weight:bold;">20</span> <span style="color: #000066; font-weight: bold;">+</span> <span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">random</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #000066; font-weight: bold;">*</span> <span style="color: #000000; font-weight:bold;">40</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> rnd_num_vertices<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span> = <span style="color: #000000; font-weight:bold;">1</span> <span style="color: #000066; font-weight: bold;">+</span> <span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">ceil</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">random</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #000066; font-weight: bold;">*</span> <span style="color: #000000; font-weight:bold;">8</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> rigid_arr<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Array</span> = ShapeUtil<span style="color: #000066; font-weight: bold;">.</span>createSymmetricPolygon<span style="color: #000000;">&#40;</span>rnd_num_vertices<span style="color: #000066; font-weight: bold;">,</span> rnd_size<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
&nbsp;
			<span style="color: #6699cc; font-weight: bold;">var</span> rigid<span style="color: #000066; font-weight: bold;">:</span>RigidBody = <span style="color: #0033ff; font-weight: bold;">new</span> RigidBody<span style="color: #000000;">&#40;</span>rnd_x<span style="color: #000066; font-weight: bold;">,</span> rnd_y<span style="color: #000066; font-weight: bold;">,</span> rnd_size<span style="color: #000066; font-weight: bold;">,</span> rigid_arr<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
&nbsp;
			foam<span style="color: #000066; font-weight: bold;">.</span>addElement<span style="color: #000000;">&#40;</span>rigid<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #000000;">&#125;</span>
	<span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.jinten.net/blog/archives/43/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[as3][FOAM]初めてのFOAM</title>
		<link>http://www.jinten.net/blog/archives/41</link>
		<comments>http://www.jinten.net/blog/archives/41#comments</comments>
		<pubDate>Sun, 03 Feb 2008 19:07:21 +0000</pubDate>
		<dc:creator>ken</dc:creator>
				<category><![CDATA[ActionScript3.0]]></category>
		<category><![CDATA[ASライブラリ]]></category>

		<guid isPermaLink="false">http://www.jinten.net/blog/archives/41</guid>
		<description><![CDATA[最近はBox2DFlashAS3と言うのがはやっているようですね。今更いろいろやろうにも出遅れた感が否めないので、ここはあえて違う物理エンジンをいじってみようと思います。 今回触ってみたのは、FOAMという物理エンジンで [...]]]></description>
			<content:encoded><![CDATA[<p>最近は<a href="http://box2dflash.sourceforge.net/">Box2DFlashAS3</a>と言うのがはやっているようですね。今更いろいろやろうにも出遅れた感が否めないので、ここはあえて違う物理エンジンをいじってみようと思います。</p>
<p>今回触ってみたのは、<a href="http://blog.generalrelativity.org/?p=17">FOAM</a>という物理エンジンです。<br />
バージョンは0.1.01。まだまだ開発版ということですかね。</p>
<p>ではでは、初めてなので、まずは使い方から。</p>
<p>必要なものは、Foamクラスのインスタンスです。</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #6699cc; font-weight: bold;">var</span> foam<span style="color: #000066; font-weight: bold;">:</span>Foam = <span style="color: #0033ff; font-weight: bold;">new</span> Foam<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
<span style="color: #004993;">addChild</span><span style="color: #000000;">&#40;</span>foam<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span></pre></div></div>

<p>しかも、FoamクラスはSpriteクラスを継承しているため、描画もしてくれます。<br />
なので、addChildしておきます。</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript3" style="font-family:monospace;">foam<span style="color: #000066; font-weight: bold;">.</span>addGlobalForceGenerator<span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">new</span> Gravity<span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">new</span> Vector<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">0</span><span style="color: #000066; font-weight: bold;">,</span> <span style="color: #000000; font-weight:bold;">0.3</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span></pre></div></div>

<p>Gravityクラスが重力になるようです。(まだ調査しきれてません･･･)<br />
これを、先ほどのfoamインスタンスのメソッド、addGlobalForceGeneratorに渡します。<br />
これで、重力発生です。</p>
<p>続いて、オブジェクトを配置します。<br />
FormインスタンスのメソッドaddElementに、ISimulatableインターフェースなインスタンスを渡してやります。<br />
円形や多角形、ベジェ曲線などがISimulatableインターフェースをimplementsしたクラスとして提供されています。<br />
今回は円形と四角を使ったサンプルを作ってみました。</p>
<p>デモは<a href='http://www.jinten.net/samples/foam_sample1.html' title='screenshot'>こちら。<img src='http://www.jinten.net/blog/wp-content/uploads/2008/02/foam_sample1.png' alt='screenshot' /></a></p>
<p>ソースは以下。</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #3f5fbf;">/**
* FOAM sample1
* @author jinten.net
*/</span>
<span style="color: #9900cc; font-weight: bold;">package</span>  <span style="color: #000000;">&#123;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.display</span><span style="color: #000066; font-weight: bold;">.*;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> org<span style="color: #000066; font-weight: bold;">.</span>generalrelativity<span style="color: #000066; font-weight: bold;">.</span>foam<span style="color: #000066; font-weight: bold;">.</span>dynamics<span style="color: #000066; font-weight: bold;">.</span>element<span style="color: #000066; font-weight: bold;">.</span>body<span style="color: #000066; font-weight: bold;">.*;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> org<span style="color: #000066; font-weight: bold;">.</span>generalrelativity<span style="color: #000066; font-weight: bold;">.</span>foam<span style="color: #000066; font-weight: bold;">.</span>dynamics<span style="color: #000066; font-weight: bold;">.</span>enum<span style="color: #000066; font-weight: bold;">.</span>Simplification<span style="color: #000066; font-weight: bold;">;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> org<span style="color: #000066; font-weight: bold;">.</span>generalrelativity<span style="color: #000066; font-weight: bold;">.</span>foam<span style="color: #000066; font-weight: bold;">.</span>dynamics<span style="color: #000066; font-weight: bold;">.</span>force<span style="color: #000066; font-weight: bold;">.</span>Gravity<span style="color: #000066; font-weight: bold;">;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> org<span style="color: #000066; font-weight: bold;">.</span>generalrelativity<span style="color: #000066; font-weight: bold;">.</span>foam<span style="color: #000066; font-weight: bold;">.</span>Foam<span style="color: #000066; font-weight: bold;">;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> org<span style="color: #000066; font-weight: bold;">.</span>generalrelativity<span style="color: #000066; font-weight: bold;">.</span>foam<span style="color: #000066; font-weight: bold;">.</span>math<span style="color: #000066; font-weight: bold;">.</span>Vector<span style="color: #000066; font-weight: bold;">;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> org<span style="color: #000066; font-weight: bold;">.</span>generalrelativity<span style="color: #000066; font-weight: bold;">.</span>foam<span style="color: #000066; font-weight: bold;">.</span>util<span style="color: #000066; font-weight: bold;">.</span>ShapeUtil<span style="color: #000066; font-weight: bold;">;</span>
&nbsp;
	<span style="color: #000000;">&#91;</span>SWF<span style="color: #000000;">&#40;</span><span style="color: #004993;">width</span>=<span style="color: #990000;">&quot;300&quot;</span><span style="color: #000066; font-weight: bold;">,</span> <span style="color: #004993;">height</span>=<span style="color: #990000;">&quot;300&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#93;</span>
	<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #9900cc; font-weight: bold;">class</span> FoamSample1 <span style="color: #0033ff; font-weight: bold;">extends</span> <span style="color: #004993;">Sprite</span> <span style="color: #000000;">&#123;</span>
&nbsp;
		<span style="color: #0033ff; font-weight: bold;">private</span> const W<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span> = <span style="color: #000000; font-weight:bold;">300</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> const H<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span> = <span style="color: #000000; font-weight:bold;">300</span><span style="color: #000066; font-weight: bold;">;</span>
&nbsp;
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #6699cc; font-weight: bold;">var</span> foam<span style="color: #000066; font-weight: bold;">:</span>Foam<span style="color: #000066; font-weight: bold;">;</span>
&nbsp;
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> FoamSample1<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #004993;">stage</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">scaleMode</span> = <span style="color: #004993;">StageScaleMode</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">NO_SCALE</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #004993;">stage</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">align</span> = <span style="color: #004993;">StageAlign</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">BOTTOM</span><span style="color: #000066; font-weight: bold;">;</span>
&nbsp;
			<span style="color: #009900; font-style: italic;">//FOAMインスタンスの生成</span>
			foam = <span style="color: #0033ff; font-weight: bold;">new</span> Foam<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #004993;">addChild</span><span style="color: #000000;">&#40;</span>foam<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
&nbsp;
			<span style="color: #009900; font-style: italic;">//オブジェクトのドラッグ有効化</span>
			foam<span style="color: #000066; font-weight: bold;">.</span>useMouseDragger<span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">true</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
&nbsp;
			foam<span style="color: #000066; font-weight: bold;">.</span>addGlobalForceGenerator<span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">new</span> Gravity<span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">new</span> Vector<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">0</span><span style="color: #000066; font-weight: bold;">,</span> <span style="color: #000000; font-weight:bold;">0.3</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
&nbsp;
			<span style="color: #009900; font-style: italic;">//circle</span>
			foam<span style="color: #000066; font-weight: bold;">.</span>addElement<span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">new</span> Circle<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">100</span><span style="color: #000066; font-weight: bold;">,</span> <span style="color: #000000; font-weight:bold;">100</span><span style="color: #000066; font-weight: bold;">,</span> <span style="color: #000000; font-weight:bold;">30</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			foam<span style="color: #000066; font-weight: bold;">.</span>addElement<span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">new</span> Circle<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">200</span><span style="color: #000066; font-weight: bold;">,</span> <span style="color: #000000; font-weight:bold;">100</span><span style="color: #000066; font-weight: bold;">,</span> <span style="color: #000000; font-weight:bold;">30</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
&nbsp;
			<span style="color: #6699cc; font-weight: bold;">var</span> wall_arr<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Array</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #009900; font-style: italic;">//ground</span>
			wall_arr = ShapeUtil<span style="color: #000066; font-weight: bold;">.</span>createRectangle<span style="color: #000000;">&#40;</span>W<span style="color: #000066; font-weight: bold;">,</span> <span style="color: #000000; font-weight:bold;">20</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			foam<span style="color: #000066; font-weight: bold;">.</span>addElement<span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">new</span> RigidBody<span style="color: #000000;">&#40;</span>W<span style="color: #000066; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">2</span><span style="color: #000066; font-weight: bold;">,</span> <span style="color: #000000; font-weight:bold;">0</span><span style="color: #000066; font-weight: bold;">,</span> Simplification<span style="color: #000066; font-weight: bold;">.</span>INFINITE_MASS<span style="color: #000066; font-weight: bold;">,</span> wall_arr<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			foam<span style="color: #000066; font-weight: bold;">.</span>addElement<span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">new</span> RigidBody<span style="color: #000000;">&#40;</span>W<span style="color: #000066; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">2</span><span style="color: #000066; font-weight: bold;">,</span> H<span style="color: #000066; font-weight: bold;">,</span> Simplification<span style="color: #000066; font-weight: bold;">.</span>INFINITE_MASS<span style="color: #000066; font-weight: bold;">,</span> wall_arr<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #009900; font-style: italic;">//wall</span>
			wall_arr = ShapeUtil<span style="color: #000066; font-weight: bold;">.</span>createRectangle<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">20</span><span style="color: #000066; font-weight: bold;">,</span> H<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			foam<span style="color: #000066; font-weight: bold;">.</span>addElement<span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">new</span> RigidBody<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">0</span><span style="color: #000066; font-weight: bold;">,</span> H<span style="color: #000066; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">2</span><span style="color: #000066; font-weight: bold;">,</span> Simplification<span style="color: #000066; font-weight: bold;">.</span>INFINITE_MASS<span style="color: #000066; font-weight: bold;">,</span> wall_arr<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			foam<span style="color: #000066; font-weight: bold;">.</span>addElement<span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">new</span> RigidBody<span style="color: #000000;">&#40;</span>W<span style="color: #000066; font-weight: bold;">,</span> H<span style="color: #000066; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">2</span><span style="color: #000066; font-weight: bold;">,</span> Simplification<span style="color: #000066; font-weight: bold;">.</span>INFINITE_MASS<span style="color: #000066; font-weight: bold;">,</span> wall_arr<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
&nbsp;
			foam<span style="color: #000066; font-weight: bold;">.</span>simulate<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #000000;">&#125;</span>
	<span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.jinten.net/blog/archives/41/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[AS3]値渡しと参照渡し</title>
		<link>http://www.jinten.net/blog/archives/40</link>
		<comments>http://www.jinten.net/blog/archives/40#comments</comments>
		<pubDate>Mon, 28 Jan 2008 00:40:43 +0000</pubDate>
		<dc:creator>ken</dc:creator>
				<category><![CDATA[ActionScript3.0]]></category>

		<guid isPermaLink="false">http://www.jinten.net/blog/archives/40</guid>
		<description><![CDATA[flashrodさんの記事から、メソッドへの引数の渡し方について。 public function swap&#40;a:Object, b:Object&#41;:void &#123; var tmp:Object  [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://d.hatena.ne.jp/flashrod/20080127#1201443331">flashrodさんの記事</a>から、メソッドへの引数の渡し方について。</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> swap<span style="color: #000000;">&#40;</span>a<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Object</span><span style="color: #000066; font-weight: bold;">,</span> <span style="color: #004993;">b</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Object</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
    <span style="color: #6699cc; font-weight: bold;">var</span> tmp<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Object</span> = a<span style="color: #000066; font-weight: bold;">;</span>
    a = <span style="color: #004993;">b</span><span style="color: #000066; font-weight: bold;">;</span>
    <span style="color: #004993;">b</span> = tmp<span style="color: #000066; font-weight: bold;">;</span>
<span style="color: #000000;">&#125;</span></pre></div></div>

<p>こんなメソッドを定義して、</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #6699cc; font-weight: bold;">var</span> a<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Object</span> = <span style="color: #000000;">&#123;</span>
    <span style="color: #004993;">value</span><span style="color: #000066; font-weight: bold;">:</span> <span style="color: #990000;">&quot;abc&quot;</span><span style="color: #000066; font-weight: bold;">,</span>
    <span style="color: #004993;">toString</span><span style="color: #000066; font-weight: bold;">:</span> <span style="color: #339966; font-weight: bold;">function</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">String</span> <span style="color: #000000;">&#123;</span> <span style="color: #0033ff; font-weight: bold;">return</span> <span style="color: #0033ff; font-weight: bold;">this</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">value</span><span style="color: #000066; font-weight: bold;">;</span> <span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span><span style="color: #000066; font-weight: bold;">;</span>
<span style="color: #6699cc; font-weight: bold;">var</span> <span style="color: #004993;">b</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Object</span> = <span style="color: #000000;">&#123;</span>
    <span style="color: #004993;">value</span><span style="color: #000066; font-weight: bold;">:</span> <span style="color: #990000;">&quot;xyz&quot;</span><span style="color: #000066; font-weight: bold;">,</span>
    <span style="color: #004993;">toString</span><span style="color: #000066; font-weight: bold;">:</span> <span style="color: #339966; font-weight: bold;">function</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">String</span> <span style="color: #000000;">&#123;</span> <span style="color: #0033ff; font-weight: bold;">return</span> <span style="color: #0033ff; font-weight: bold;">this</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">value</span><span style="color: #000066; font-weight: bold;">;</span> <span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span><span style="color: #000066; font-weight: bold;">;</span>
swap<span style="color: #000000;">&#40;</span>a<span style="color: #000066; font-weight: bold;">,</span> <span style="color: #004993;">b</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
<span style="color: #004993;">trace</span><span style="color: #000000;">&#40;</span><span style="color: #990000;">&quot;a=&quot;</span><span style="color: #000066; font-weight: bold;">,</span> a<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
<span style="color: #004993;">trace</span><span style="color: #000000;">&#40;</span><span style="color: #990000;">&quot;b=&quot;</span><span style="color: #000066; font-weight: bold;">,</span> <span style="color: #004993;">b</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span></pre></div></div>

<p>こんな感じで実行しても、</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript3" style="font-family:monospace;">a= xyz
<span style="color: #004993;">b</span>= abc</pre></div></div>

<p>こうならない。というお話。</p>
<p>ならないだろうとわかってはいるんですが、<br />
言われてみれば参照渡しと言うならできるはず。<br />
こういうところで説明ができない時点で、<br />
なんとなく感覚でやってしまってるんだろうなぁ、と反省しなくては･･･。</p>
<p>結論としては、俗に言う「参照の値渡し」というやつなんですね。</p>
<p>C/C++で書くなら、</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">#include &lt;stdio .h&gt;</span>
&nbsp;
<span style="color: #993333;">void</span> swap<span style="color: #009900;">&#40;</span><span style="color: #993333;">int</span><span style="color: #339933;">*</span> a<span style="color: #339933;">,</span> <span style="color: #993333;">int</span><span style="color: #339933;">*</span> b<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #993333;">int</span><span style="color: #339933;">*</span> tmp <span style="color: #339933;">=</span> a<span style="color: #339933;">;</span>
	a <span style="color: #339933;">=</span> b<span style="color: #339933;">;</span>
	b <span style="color: #339933;">=</span> a<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">int</span> main<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #993333;">int</span> a <span style="color: #339933;">=</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
	<span style="color: #993333;">int</span> b <span style="color: #339933;">=</span> <span style="color: #0000dd;">2</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;a=%d b=%d<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> a<span style="color: #339933;">,</span> b<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	swap<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>a<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>b<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;a=%d b=%d<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> a<span style="color: #339933;">,</span> b<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #b1b100;">return</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #339933;">&lt;/</span>stdio<span style="color: #339933;">&gt;</span></pre></div></div>

<p>と、まぁ参照というより、ポインタ使ってるっぽい感じのイメージでいいんですかね。多分。<br />
とりあえず、自分的には理解できてすっきり。</p>
<p>細かい言葉のあやみたいなところではあるんですが、<br />
いつかこういったささいな部分ではまって、時間を無駄にするかもしれないし。<br />
勉強になりました。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jinten.net/blog/archives/40/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

