<?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>愚人呓语</title>
	<atom:link href="http://eidiot.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://eidiot.net</link>
	<description>eidiot's blog. My flapdoodles.</description>
	<lastBuildDate>Tue, 06 Jul 2010 10:33:02 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Flex Unit 4 的 Test Suite 生成工具</title>
		<link>http://eidiot.net/2010/07/06/test-suite-generator-for-flex-unit-4/</link>
		<comments>http://eidiot.net/2010/07/06/test-suite-generator-for-flex-unit-4/#comments</comments>
		<pubDate>Tue, 06 Jul 2010 10:32:23 +0000</pubDate>
		<dc:creator>eidiot</dc:creator>
				<category><![CDATA[敝帚不珍 · [作品]]]></category>
		<category><![CDATA[flexunit]]></category>
		<category><![CDATA[unittest]]></category>

		<guid isPermaLink="false">http://eidiot.net/?p=552</guid>
		<description><![CDATA[Read in English: Test suite generator for Flex Unit 4 写了一个 小工具 来生成 AllTests.as 文件给 FlexUnit4 用. 下载 air 文件，安装运行即可。 同过ant调用的示例代码: &#60;project name=&#34;Test Suiter&#34; default=&#34;createSuite&#34;&#62; &#60;target name=&#34;createSuite&#34;&#62; &#60;exec executable=&#34;/Applications/TestSuiter.app/Contents/MacOS/TestSuiter&#34;&#62; &#60;arg value=&#34;/Users/someone/Desktop/SomeProject/tests&#34; /&#62; &#60;/exec&#62; &#60;/target&#62; &#60;/project&#62;]]></description>
			<content:encoded><![CDATA[<p><a href="http://eidiot.net/en/2010/07/06/test-suite-generator-for-flex-unit-4/" class="liinternal">Read in English: Test suite generator for Flex Unit 4</a></p>
<p>写了一个 <a href="http://github.com/eidiot/TestSuiter" target="_blank" class="liexternal">小工具</a> 来生成 AllTests.as 文件给 <a href="http://flexunit.org/" target="_blank" class="liexternal">FlexUnit4</a> 用. <a href="http://github.com/eidiot/TestSuiter/downloads" target="_blank" class="liexternal">下载</a> air 文件，安装运行即可。</p>
<p>同过ant调用的示例代码: </p>

<div class="wp_codebox"><table><tr id="p5522"><td class="code" id="p552code2"><pre class="xml" style="font-family:monospace;">  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;project</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;Test Suiter&quot;</span> <span style="color: #000066;">default</span>=<span style="color: #ff0000;">&quot;createSuite&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;target</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;createSuite&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;exec</span> <span style="color: #000066;">executable</span>=<span style="color: #ff0000;">&quot;/Applications/TestSuiter.app/Contents/MacOS/TestSuiter&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;arg</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;/Users/someone/Desktop/SomeProject/tests&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/exec<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/target<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/project<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://eidiot.net/2010/07/06/test-suite-generator-for-flex-unit-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>使用FlexUnit4对as3-signals进行异步测试</title>
		<link>http://eidiot.net/2010/05/21/async-test-for-as3-signals-with-flexunit4/</link>
		<comments>http://eidiot.net/2010/05/21/async-test-for-as3-signals-with-flexunit4/#comments</comments>
		<pubDate>Fri, 21 May 2010 03:46:27 +0000</pubDate>
		<dc:creator>eidiot</dc:creator>
				<category><![CDATA[敝帚不珍 · [作品]]]></category>
		<category><![CDATA[as3-signals]]></category>
		<category><![CDATA[flexunit]]></category>

		<guid isPermaLink="false">http://eidiot.net/?p=551</guid>
		<description><![CDATA[Read in English: Async test for as3-signals with FlexUnit4 使用 Robert Penner 的 as3-signals 可以帮助我们节省代码量并写出更整洁的代码. 这是一个由几个代理方法组成的使用 FlexUnit4进行测试的扩展 proceedOnSignal handleSignal failOnSignal registerFailureSignal proceedOnSignal 使用这个方法确认一个signal必须被抛出。 &#91;Test&#40;async&#41;&#93; public function test_proceedOnSignal&#40;&#41;:void &#123; var model:IModel = new SomeModel&#40;&#41;; proceedOnSignal&#40;this, model.changedSignal&#41;; model.doSomethingChange&#40;&#41;; &#125; handleSignal 使用这个方法确认一个signal被抛出并且在handler方法里进行更多的断言。这个handler方法必须接收两个参数，第一个是SignalAsyncEvent，可以从这个事件的 args 属性里拿到 signal 的 dispatch 方法里传出的所有参数。第二个参数是一个Object，传进的是 handleSignal 方法的 passThroughData 参数。 &#91;Test&#40;async&#41;&#93; public function change_user&#40;&#41;:void &#123; var [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://eidiot.net/en/2010/05/21/async-test-for-as3-signals-with-flexunit4/" class="liinternal">Read in English: Async test for as3-signals with FlexUnit4</a></p>
<p>使用 <a href="http://robertpenner.com/" target="_blank" class="liexternal">Robert Penner</a> 的 <a href="http://github.com/robertpenner/as3-signals" target="_blank" class="liexternal">as3-signals</a> 可以帮助我们节省代码量并写出更整洁的代码. 这是一个由几个代理方法组成的使用 <a href="http://flexunit.org/" target="_blank" class="liexternal">FlexUnit4</a>进行测试的<a href="http://github.com/eidiot/as3-signals-utilities-async" target="_blank" class="liexternal">扩展</a></p>
<ul>
<li>proceedOnSignal</li>
<li>handleSignal</li>
<li>failOnSignal</li>
<li>registerFailureSignal</li>
</ul>
<h4>proceedOnSignal</h4>
<p>使用这个方法确认一个signal必须被抛出。</p>

<div class="wp_codebox"><table><tr id="p5517"><td class="code" id="p551code7"><pre class="actionscript" style="font-family:monospace;"><span style="color: #66cc66;">&#91;</span>Test<span style="color: #66cc66;">&#40;</span>async<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#93;</span>
<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> test_proceedOnSignal<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> 
<span style="color: #66cc66;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">var</span> model:IModel = <span style="color: #000000; font-weight: bold;">new</span> SomeModel<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
    proceedOnSignal<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">this</span>, model.<span style="color: #006600;">changedSignal</span><span style="color: #66cc66;">&#41;</span>;
    model.<span style="color: #006600;">doSomethingChange</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span></pre></td></tr></table></div>

<p><span id="more-551"></span></p>
<h4>handleSignal</h4>
<p>使用这个方法确认一个signal被抛出并且在handler方法里进行更多的断言。这个handler方法必须接收两个参数，第一个是<em>SignalAsyncEvent</em>，可以从这个事件的 args 属性里拿到 signal 的 dispatch 方法里传出的所有参数。第二个参数是一个Object，传进的是 <em>handleSignal</em> 方法的 <em>passThroughData</em> 参数。</p>

<div class="wp_codebox"><table><tr id="p5518"><td class="code" id="p551code8"><pre class="actionscript" style="font-family:monospace;"><span style="color: #66cc66;">&#91;</span>Test<span style="color: #66cc66;">&#40;</span>async<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#93;</span> 
<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> change_user<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> 
<span style="color: #66cc66;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">var</span> model:IModel = <span style="color: #000000; font-weight: bold;">new</span> SomeModel<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
    handleSignal<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">this</span>, model.<span style="color: #006600;">changedSignal</span>, verify_user, <span style="color: #cc66cc;">500</span>, <span style="color: #66cc66;">&#123;</span><span style="color: #ff0000;">&quot;name&quot;</span>:<span style="color: #ff0000;">&quot;Tom&quot;</span>, <span style="color: #ff0000;">&quot;age&quot;</span>:<span style="color: #cc66cc;">20</span><span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;
    model.<span style="color: #006600;">changeUser</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;Tom&quot;</span>, <span style="color: #cc66cc;">20</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> verify_user<span style="color: #66cc66;">&#40;</span>event:SignalAsyncEvent, <span style="color: #0066CC;">data</span>:<span style="color: #0066CC;">Object</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> 
<span style="color: #66cc66;">&#123;</span>
    assertEquals<span style="color: #66cc66;">&#40;</span>event.<span style="color: #006600;">args</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#93;</span>, <span style="color: #0066CC;">data</span>.<span style="color: #0066CC;">name</span><span style="color: #66cc66;">&#41;</span>;
    assertEquals<span style="color: #66cc66;">&#40;</span>event.<span style="color: #006600;">args</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#93;</span>, <span style="color: #0066CC;">data</span>.<span style="color: #006600;">age</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span></pre></td></tr></table></div>

<p>
<h4>failOnSignal</h4>
<p>使用这个方法来确认一个signal <strong>不</strong> 被抛出。</p>

<div class="wp_codebox"><table><tr id="p5519"><td class="code" id="p551code9"><pre class="actionscript" style="font-family:monospace;"><span style="color: #66cc66;">&#91;</span>Test<span style="color: #66cc66;">&#40;</span>async<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#93;</span> 
<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> not_changed<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> 
<span style="color: #66cc66;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">var</span> model:IModel = <span style="color: #000000; font-weight: bold;">new</span> SomeModel<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
    failOnSignal<span style="color: #66cc66;">&#40;</span>model.<span style="color: #006600;">changedSignal</span><span style="color: #66cc66;">&#41;</span>;
    model.<span style="color: #006600;">doSomethingNotChange</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span></pre></td></tr></table></div>

<p>
<h4>registerFailureSignal</h4>
<p>使用这个方法在一个signal被抛出的时候使测试失败。假设你正在等待一个service的success signal，当这个service的error signal 抛出的时候你将希望这个测试直接失败，而不是等待超时。</p>

<div class="wp_codebox"><table><tr id="p55110"><td class="code" id="p551code10"><pre class="actionscript" style="font-family:monospace;"><span style="color: #66cc66;">&#91;</span>Test<span style="color: #66cc66;">&#40;</span>async<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#93;</span> 
<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> call_service<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> 
<span style="color: #66cc66;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">var</span> service:IService = <span style="color: #000000; font-weight: bold;">new</span> SomeService<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
    registerFailureSignal<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">this</span>, service.<span style="color: #006600;">failedSignal</span><span style="color: #66cc66;">&#41;</span>;
    proceedOnSignal<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">this</span>, service.<span style="color: #006600;">successSignal</span><span style="color: #66cc66;">&#41;</span>;
    service.<span style="color: #0066CC;">call</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span></pre></td></tr></table></div>

<p>
<h4>更多</h4>
<ul>
<li><a href="http://github.com/eidiot/as3-signals-utilities-async/downloads" target="_blank" class="liexternal">下载这个扩展库</a></li>
<li><a href="http://docs.flexunit.org/asdocs/org/flexunit/async/Async.html" target="" class="liexternal">FlexUnit4中异步测试的更多内容</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://eidiot.net/2010/05/21/async-test-for-as3-signals-with-flexunit4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Tasks Wapper of ig version</title>
		<link>http://eidiot.net/2010/05/02/google-tasks-wapper-of-ig-version/</link>
		<comments>http://eidiot.net/2010/05/02/google-tasks-wapper-of-ig-version/#comments</comments>
		<pubDate>Sun, 02 May 2010 09:30:23 +0000</pubDate>
		<dc:creator>eidiot</dc:creator>
				<category><![CDATA[敝帚不珍 · [作品]]]></category>

		<guid isPermaLink="false">http://eidiot.net/?p=550</guid>
		<description><![CDATA[不是很喜欢 Christian Cantrell 使用的 https://mail.google.com/tasks/canvas 版本，所以重新做了一个，使用轻量的 https://mail.google.com/tasks/ig 版。 代码很简单，放在了 GitHub 上。 
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_badge_1918374853"
			class="flashmovie"
			width="217"
			height="180">
	<param name="movie" value="http://eidiot.net/product/google_tasks_ig/badge.swf" />
	<param name="flashvars" value="appname=GoogleTaskIg&amp;appurl=http://eidiot.net/product/google_tasks_ig/GoogleTaskIg.air&amp;airversion=1.5&amp;imageurl=http://eidiot.net/product/google_tasks_ig/google_tasks_ig_badge.png" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://eidiot.net/product/google_tasks_ig/badge.swf"
			name="fm_badge_1918374853"
			width="217"
			height="180">
		<param name="flashvars" value="appname=GoogleTaskIg&amp;appurl=http://eidiot.net/product/google_tasks_ig/GoogleTaskIg.air&amp;airversion=1.5&amp;imageurl=http://eidiot.net/product/google_tasks_ig/google_tasks_ig_badge.png" />
	<!--<![endif]-->
		 
	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>]]></description>
			<content:encoded><![CDATA[<p>不是很喜欢 <a href="http://blogs.adobe.com/cantrell/archives/2009/12/google_tasks_on_your_desktop.html" target="_blank" class="liexternal">Christian Cantrell</a> 使用的 <a href="https://mail.google.com/tasks/canvas" target="_blank" class="liexternal">https://mail.google.com/tasks/canvas</a> 版本，所以重新做了一个，使用轻量的 <a href="https://mail.google.com/tasks/ig" target="_blank" class="liexternal">https://mail.google.com/tasks/ig</a> 版。 代码很简单，放在了 <a href="http://github.com/eidiot/GoogleTasksWapper" target="_blank" class="liexternal">GitHub</a> 上。</p>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_badge_1420395800"
			class="flashmovie"
			width="217"
			height="180">
	<param name="movie" value="http://eidiot.net/product/google_tasks_ig/badge.swf" />
	<param name="flashvars" value="appname=GoogleTaskIg&amp;appurl=http://eidiot.net/product/google_tasks_ig/GoogleTaskIg.air&amp;airversion=1.5&amp;imageurl=http://eidiot.net/product/google_tasks_ig/google_tasks_ig_badge.png" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://eidiot.net/product/google_tasks_ig/badge.swf"
			name="fm_badge_1420395800"
			width="217"
			height="180">
		<param name="flashvars" value="appname=GoogleTaskIg&amp;appurl=http://eidiot.net/product/google_tasks_ig/GoogleTaskIg.air&amp;airversion=1.5&amp;imageurl=http://eidiot.net/product/google_tasks_ig/google_tasks_ig_badge.png" />
	<!--<![endif]-->
		
<p><a href="http://adobe.com/go/getflashplayer" target="_blank" class="liimagelink"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a></p>

	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
]]></content:encoded>
			<wfw:commentRss>http://eidiot.net/2010/05/02/google-tasks-wapper-of-ig-version/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>xface: 简单的ui-unit辅助开发工具</title>
		<link>http://eidiot.net/2010/04/18/xface-a-simple-ui-unit-develop-tool/</link>
		<comments>http://eidiot.net/2010/04/18/xface-a-simple-ui-unit-develop-tool/#comments</comments>
		<pubDate>Sun, 18 Apr 2010 15:42:56 +0000</pubDate>
		<dc:creator>eidiot</dc:creator>
				<category><![CDATA[敝帚不珍 · [作品]]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[xface]]></category>

		<guid isPermaLink="false">http://eidiot.net/?p=549</guid>
		<description><![CDATA[Read in English: xface: A simple ui-unit develop tool XFace 是一个简单的 AsUnit/FlexUnit 4 风格的 UI-Unit 框架, 但不是用于测试。它是快速到达和验证ui实现的辅助开发工具。 Demo: (Source) 
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_DemoUIUnitRunner_1529687737"
			class="flashmovie"
			width="370"
			height="240">
	<param name="movie" value="http://eidiot.github.com/xface/demo/DemoUIUnitRunner.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://eidiot.github.com/xface/demo/DemoUIUnitRunner.swf"
			name="fm_DemoUIUnitRunner_1529687737"
			width="370"
			height="240">
	<!--<![endif]-->
		 
	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object> Xface 使用和 AsUnit/FlexUnit 4 一样的 [Before], [After], [Test], [Suite] metadata 标签, 并使用 [Inject] 标签用于依赖注入。 &#91;Inject&#93; pubic var container:DisplayObjectContainer; &#91;Test&#93; public function test&#40;&#41;:void &#123; container.addChild&#40;instance&#41;; &#125; 所有的ui-unit方法都显示在一个列表中，你可以运行其中之一以验证最小的ui元素，保持小步前进。 Runner UI [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://eidiot.net/en/2010/04/18/xface-a-simple-ui-unit-develop-tool" target="_blank" class="liinternal">Read in English: xface: A simple ui-unit develop tool</a></p>
<p><a href="http://eidiot.github.com/xface" target="_blank" class="liexternal">XFace</a> 是一个简单的 AsUnit/FlexUnit 4 风格的 UI-Unit 框架, 但不是用于测试。它是快速到达和验证ui实现的辅助开发工具。</p>
<p>Demo: (<a href="http://github.com/eidiot/xface/tree/master/demo/" target="_blank" class="liexternal">Source</a>)</p>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_DemoUIUnitRunner_209078826"
			class="flashmovie"
			width="370"
			height="240">
	<param name="movie" value="http://eidiot.github.com/xface/demo/DemoUIUnitRunner.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://eidiot.github.com/xface/demo/DemoUIUnitRunner.swf"
			name="fm_DemoUIUnitRunner_209078826"
			width="370"
			height="240">
	<!--<![endif]-->
		
<p><a href="http://adobe.com/go/getflashplayer" target="_blank" class="liimagelink"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a></p>

	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
<p>Xface 使用和 AsUnit/FlexUnit 4 一样的 [Before], [After], [Test], [Suite] metadata 标签, 并使用 [Inject] 标签用于依赖注入。</p>

<div class="wp_codebox"><table><tr id="p54912"><td class="code" id="p549code12"><pre class="actionscript" style="font-family:monospace;"><span style="color: #66cc66;">&#91;</span>Inject<span style="color: #66cc66;">&#93;</span>
pubic <span style="color: #000000; font-weight: bold;">var</span> container:DisplayObjectContainer;
<span style="color: #66cc66;">&#91;</span>Test<span style="color: #66cc66;">&#93;</span>
<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> test<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> <span style="color: #66cc66;">&#123;</span>
    container.<span style="color: #006600;">addChild</span><span style="color: #66cc66;">&#40;</span>instance<span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span></pre></td></tr></table></div>

<p>所有的ui-unit方法都显示在一个列表中，你可以运行其中之一以验证最小的ui元素，保持小步前进。</p>
<p>Runner UI 使用了<a href="http://twitter.com/bit101" target="_blank" class="liexternal">@bit101</a> 的 <a href="http://www.minimalcomps.com/" target="_blank" class="liexternal">Minimal Comps</a> 里的 List 组件. </p>
]]></content:encoded>
			<wfw:commentRss>http://eidiot.net/2010/04/18/xface-a-simple-ui-unit-develop-tool/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>今天RIA天地行Robotlegs主题的幻灯片</title>
		<link>http://eidiot.net/2010/03/28/slides-of-my-robotlegs-presentation-today/</link>
		<comments>http://eidiot.net/2010/03/28/slides-of-my-robotlegs-presentation-today/#comments</comments>
		<pubDate>Sun, 28 Mar 2010 14:07:37 +0000</pubDate>
		<dc:creator>eidiot</dc:creator>
				<category><![CDATA[拙口有语 · [琐事]]]></category>
		<category><![CDATA[robotlegs]]></category>

		<guid isPermaLink="false">http://eidiot.net/?p=548</guid>
		<description><![CDATA[今天在 天地会 的 ria天地行 活动上介绍了 Robotlegs 框架, 下面是幻灯片内容（基于 Joel Hooks 的版本）。文件在 GitHub 上, 同时提供 .key, .ppt, 和 .pdf 格式下载 虽然黑羽安慰说第一次上台讲成这样不错了，不过提问环节差点冷场让我感觉很对不起观众。如果再有其它机会，需要更充分的准备才行啊。 
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_SlidePlayer_1257659523"
			class="flashmovie"
			width="640"
			height="500">
	<param name="movie" value="http://eidiot.net/wp-content/uploads/2010/03/SlidePlayer.swf" />
	<param name="flashvars" value="path=http://eidiot.net/wp-content/uploads/2010/03/rlslides/&#038&amp;file=Robotlegs_9ria_2010.*.jpg&#038&amp;start=002&#038&amp;end=065" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://eidiot.net/wp-content/uploads/2010/03/SlidePlayer.swf"
			name="fm_SlidePlayer_1257659523"
			width="640"
			height="500">
		<param name="flashvars" value="path=http://eidiot.net/wp-content/uploads/2010/03/rlslides/&#038&amp;file=Robotlegs_9ria_2010.*.jpg&#038&amp;start=002&#038&amp;end=065" />
	<!--<![endif]-->
		 
	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>]]></description>
			<content:encoded><![CDATA[<p>今天在 <a href="http://flash.9ria.com/" target="_blank" class="liexternal">天地会</a> 的 <a href="http://www.9ria.com/?action-channel-name-riatdxindex" target="_blank" class="liexternal">ria天地行</a> 活动上介绍了 <a href="http://robotlegs.org" target="_blank" class="liexternal">Robotlegs</a> 框架, 下面是幻灯片内容（基于 <a href="http://joelhooks.com/2009/11/14/texflex09-robotlegs-slides-and-a-robotlegs-t-shirt-giveaway/" target="_blank" class="liexternal">Joel Hooks</a> 的版本）。文件在 <a href="http://github.com/eidiot/robotlegs-presentations/tree/master/9ria_2010/" target="_blank" class="liexternal"> GitHub</a> 上, 同时提供 <a href="http://eidiot.net/wp-content/uploads/2010/03/Robotlegs_9ria_2010.key" target="_blank" class="liinternal">.key</a>, <a href="http://eidiot.net/wp-content/uploads/2010/03/Robotlegs_9ria_2010.ppt" target="_blank" class="liinternal">.ppt</a>, 和 <a href="http://eidiot.net/wp-content/uploads/2010/03/Robotlegs_9ria_2010.pdf" target="_blank" class="liinternal">.pdf</a> 格式下载</p>
<p>
虽然黑羽安慰说第一次上台讲成这样不错了，不过提问环节差点冷场让我感觉很对不起观众。如果再有其它机会，需要更充分的准备才行啊。
</p>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_SlidePlayer_400983043"
			class="flashmovie"
			width="640"
			height="500">
	<param name="movie" value="http://eidiot.net/wp-content/uploads/2010/03/SlidePlayer.swf" />
	<param name="flashvars" value="path=http://eidiot.net/wp-content/uploads/2010/03/rlslides/&#038&amp;file=Robotlegs_9ria_2010.*.jpg&#038&amp;start=002&#038&amp;end=065" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://eidiot.net/wp-content/uploads/2010/03/SlidePlayer.swf"
			name="fm_SlidePlayer_400983043"
			width="640"
			height="500">
		<param name="flashvars" value="path=http://eidiot.net/wp-content/uploads/2010/03/rlslides/&#038&amp;file=Robotlegs_9ria_2010.*.jpg&#038&amp;start=002&#038&amp;end=065" />
	<!--<![endif]-->
		
<p><a href="http://adobe.com/go/getflashplayer" target="_blank" class="liimagelink"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a></p>

	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
]]></content:encoded>
			<wfw:commentRss>http://eidiot.net/2010/03/28/slides-of-my-robotlegs-presentation-today/feed/</wfw:commentRss>
		<slash:comments>24</slash:comments>
		</item>
		<item>
		<title>Xrope Demo</title>
		<link>http://eidiot.net/2010/03/17/demo-for-xrope/</link>
		<comments>http://eidiot.net/2010/03/17/demo-for-xrope/#comments</comments>
		<pubDate>Tue, 16 Mar 2010 16:25:06 +0000</pubDate>
		<dc:creator>eidiot</dc:creator>
				<category><![CDATA[敝帚不珍 · [作品]]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[xrope]]></category>

		<guid isPermaLink="false">http://eidiot.net/?p=547</guid>
		<description><![CDATA[Read in English: Demo for xrope/ 使用 Minimal Comps, Robotlegs, 和 as3-Signals 做了一个 xrope 的 demo: 
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_XropeDemo_1189942892"
			class="flashmovie"
			width="550"
			height="400">
	<param name="movie" value="http://eidiot.github.com/xrope/demo/XropeDemo.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://eidiot.github.com/xrope/demo/XropeDemo.swf"
			name="fm_XropeDemo_1189942892"
			width="550"
			height="400">
	<!--<![endif]-->
		
	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object> Github 上Demo代码 下载 xrope swc]]></description>
			<content:encoded><![CDATA[<p><a href="http://eidiot.net/en/2010/03/17/demo-for-xrope" class="liinternal">Read in English: Demo for xrope/</a></p>
<p>
使用 <a href="http://www.minimalcomps.com/" target="_blank" class="liexternal">Minimal Comps</a>, <a href="http://robotlegs.org/" target="_blank" class="liexternal">Robotlegs</a>, 和 <a href="http://github.com/robertpenner/as3-signals" target="_blank" class="liexternal">as3-Signals</a> 做了一个 <a href="http://eidiot.github.com/xrope/" target="_blank" class="liexternal">xrope</a> 的 <a href="http://eidiot.github.com/xrope/index.html#DemoLink" target="_blank" class="liexternal">demo</a>:
</p>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_XropeDemo_1445705612"
			class="flashmovie"
			width="550"
			height="400">
	<param name="movie" value="http://eidiot.github.com/xrope/demo/XropeDemo.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://eidiot.github.com/xrope/demo/XropeDemo.swf"
			name="fm_XropeDemo_1445705612"
			width="550"
			height="400">
	<!--<![endif]-->
		
	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
<ul>
<li><a href="http://github.com/eidiot/XropeDemo" target="_blank" class="liexternal">Github 上Demo代码</a></li>
<li><a href="http://github.com/eidiot/xrope/downloads" target="_blank" class="liexternal">下载 xrope swc</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://eidiot.net/2010/03/17/demo-for-xrope/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>xrope v0.2: 增加 GridLayout</title>
		<link>http://eidiot.net/2010/03/14/xrope-v0-2-added-gridlayout/</link>
		<comments>http://eidiot.net/2010/03/14/xrope-v0-2-added-gridlayout/#comments</comments>
		<pubDate>Sun, 14 Mar 2010 10:51:44 +0000</pubDate>
		<dc:creator>eidiot</dc:creator>
				<category><![CDATA[敝帚不珍 · [作品]]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[xrope]]></category>

		<guid isPermaLink="false">http://eidiot.net/?p=546</guid>
		<description><![CDATA[Read in English: xrope v0.2: Added GridLayout xrope v0.2.0 增加了 GridLayout 例子 文档 Github上的源代码 下载 v0.2.0 的 swc]]></description>
			<content:encoded><![CDATA[<p><a href="http://eidiot.net/en/2010/03/14/xrope-v0-2-added-gridlayout/" class="liinternal">Read in English: xrope v0.2: Added GridLayout</a></p>
<p>xrope v0.2.0 增加了 GridLayout</p>
<ul>
<li><a href="http://eidiot.github.com/xrope/#GridExampleLink" target="_blank" class="liexternal">例子</a></li>
<li><a href="http://eidiot.github.com/xrope/doc/xrope/GridLayout.html" target="_blank" class="liexternal">文档</a></li>
<li><a href="http://github.com/eidiot/xrope" target="_blank" class="liexternal">Github上的源代码</a></li>
<li><a href="http://github.com/eidiot/xrope/downloads" target="_blank" class="liexternal">下载 v0.2.0 的 swc</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://eidiot.net/2010/03/14/xrope-v0-2-added-gridlayout/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>xrope v0.1.0 发布</title>
		<link>http://eidiot.net/2010/03/14/xrope-v-0-1-0-released/</link>
		<comments>http://eidiot.net/2010/03/14/xrope-v-0-1-0-released/#comments</comments>
		<pubDate>Sat, 13 Mar 2010 16:00:47 +0000</pubDate>
		<dc:creator>eidiot</dc:creator>
				<category><![CDATA[敝帚不珍 · [作品]]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[xman]]></category>
		<category><![CDATA[xrope]]></category>

		<guid isPermaLink="false">http://eidiot.net/?p=545</guid>
		<description><![CDATA[Read in English:xrope v0.1.0 released xrope v0.1.0 发布。 详情 例子 文档 GitHub上的源码 下载 swc]]></description>
			<content:encoded><![CDATA[<p><a href="http://eidiot.net/en/2010/03/13/xrope-v-0-1-0-released/" class="liinternal">Read in English:xrope v0.1.0 released</a></p>
<p>xrope v0.1.0 发布。</p>
<ul>
<li><a href="http://eidiot.github.com/xrope/zh.html" target="_blank" class="liexternal">详情</a></li>
<li><a href="http://eidiot.github.com/xrope/zh.html#ExamplesLink" target="_blank" class="liexternal">例子</a></li>
<li><a href="http://eidiot.github.com/xrope/doc/" target="_blank" class="liexternal">文档</a></li>
<li><a href="http://github.com/eidiot/xrope" target="_blank" class="liexternal">GitHub上的源码</a></li>
<li><a href="http://github.com/eidiot/xrope/downloads" target="_blank" class="liexternal">下载 swc</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://eidiot.net/2010/03/14/xrope-v-0-1-0-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Robotlegs 的 LazyMediator 扩展</title>
		<link>http://eidiot.net/2010/03/10/robotlegs-utility-lazymediator/</link>
		<comments>http://eidiot.net/2010/03/10/robotlegs-utility-lazymediator/#comments</comments>
		<pubDate>Wed, 10 Mar 2010 14:42:57 +0000</pubDate>
		<dc:creator>eidiot</dc:creator>
				<category><![CDATA[学海沉舟 · [技术]]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[robotlegs]]></category>

		<guid isPermaLink="false">http://eidiot.net/?p=543</guid>
		<description><![CDATA[Read in English: Robotlegs Utility LazyMediator 为了游戏中有更好的性能为 Robotlegs 写了一个 LazyMediator 扩展。 如何使用 在 context 里 override mediatorMap 的 getter 方法: return _mediatorMap &#124;&#124; &#40;_mediatorMap = new LazyMediatorMap&#40;contextView, injector&#41;&#41;; 在 view 类的构造函数里增加: new LazyMediatorActivator&#40;this&#41;; 作用 LazyMediatorMap 不监听显示列表里所有的 ADDED_TO_STAGE 事件而检测所有被添加到显示列表的显示对象。 如何工作 当 view 被添加到 stage 或从 stage 移除时 LazyMediatorActivator 广播 LazyMediatorEvent。 LazyMediatorMap 监听 context 的 LazyMediatorEvent 然后检查对应的 [...]]]></description>
			<content:encoded><![CDATA[<p>
<a href="http://eidiot.net/en/2010/03/10/robotlegs-utility-lazymediator/" class="liinternal">Read in English: Robotlegs Utility LazyMediator</a>
</p>
<p>
	为了游戏中有更好的性能为 <a href="http://robotlegs.org" target="_blank" class="liexternal">Robotlegs</a> 写了一个 <a href="http://github.com/eidiot/robotlegs-utilities-LazyMediator" target="_blank" class="liexternal">LazyMediator 扩展</a>。
</p>
<h5>
	如何使用<br />
</h5>
<ul>
<li>在 context 里 override mediatorMap 的 getter 方法:

<div class="wp_codebox"><table><tr id="p54315"><td class="code" id="p543code15"><pre class="actionscript" style="font-family:monospace;"><span style="color: #b1b100;">return</span> _mediatorMap <span style="color: #66cc66;">||</span> <span style="color: #66cc66;">&#40;</span>_mediatorMap = <span style="color: #000000; font-weight: bold;">new</span> LazyMediatorMap<span style="color: #66cc66;">&#40;</span>contextView, injector<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;</pre></td></tr></table></div>

</li>
<li>在 view 类的构造函数里增加:

<div class="wp_codebox"><table><tr id="p54316"><td class="code" id="p543code16"><pre class="actionscript" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">new</span> LazyMediatorActivator<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">this</span><span style="color: #66cc66;">&#41;</span>;</pre></td></tr></table></div>

</li>
</ul>
<h5>
	作用<br />
</h5>
<ul>
<li>LazyMediatorMap 不监听显示列表里所有的 ADDED_TO_STAGE 事件而检测所有被添加到显示列表的显示对象。
	</li>
</ul>
<h5>
	如何工作<br />
</h5>
<ul>
<li>当 view 被添加到 stage 或从 stage 移除时 LazyMediatorActivator 广播 LazyMediatorEvent。
	</li>
<li>LazyMediatorMap 监听 context 的 LazyMediatorEvent 然后检查对应的 view。
	</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://eidiot.net/2010/03/10/robotlegs-utility-lazymediator/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>开源 layout 类库: xrope</title>
		<link>http://eidiot.net/2010/02/21/new-layout-library-xrope/</link>
		<comments>http://eidiot.net/2010/02/21/new-layout-library-xrope/#comments</comments>
		<pubDate>Sun, 21 Feb 2010 13:05:29 +0000</pubDate>
		<dc:creator>eidiot</dc:creator>
				<category><![CDATA[敝帚不珍 · [作品]]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[xman]]></category>

		<guid isPermaLink="false">http://eidiot.net/?p=542</guid>
		<description><![CDATA[Read in English: Simple layout library: xrope 在 GitHub 新建了一个简单的 layout 类库 xrope. 之后会继续添加更多功能，和更多的类库，组成一个类库集合：xman (现在有 xrope 和 xbones)。]]></description>
			<content:encoded><![CDATA[<p>
<a href="http://eidiot.net/en/2010/03/10/new-layout-library-xrope/" class="liinternal">Read in English: Simple layout library: xrope</a>
</p>
<p>
在 <a href="http://github.com/eidiot/xrope" target="_blank" class="liexternal">GitHub</a> 新建了一个简单的 layout 类库 <a href="http://eidiot.github.com/xrope/" target="_blank" class="liexternal">xrope</a>.
</p>
<p>
之后会继续添加更多功能，和更多的类库，组成一个类库集合：xman (现在有 <a href="http://github.com/eidiot/xrope/" target="_blank" class="liexternal">xrope</a> 和 <a href="http://github.com/eidiot/xbones/" target="_blank" class="liexternal">xbones</a>)。</p>
]]></content:encoded>
			<wfw:commentRss>http://eidiot.net/2010/02/21/new-layout-library-xrope/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
