<?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>fleurer &#187; gfw</title>
	<atom:link href="http://www.fleurer-lee.com/tag/gfw/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.fleurer-lee.com</link>
	<description>rage and love, story of my life.</description>
	<lastBuildDate>Thu, 02 Sep 2010 11:07:00 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>break the wall!</title>
		<link>http://www.fleurer-lee.com/2009/07/15/break-the-wall/</link>
		<comments>http://www.fleurer-lee.com/2009/07/15/break-the-wall/#comments</comments>
		<pubDate>Wed, 15 Jul 2009 12:09:28 +0000</pubDate>
		<dc:creator>ssword</dc:creator>
				<category><![CDATA[杂碎]]></category>
		<category><![CDATA[gfw]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[中指]]></category>
		<category><![CDATA[娱乐]]></category>

		<guid isPermaLink="false">http://swdpress.cn/?p=645281</guid>
		<description><![CDATA[灵感来自HelloTee的这件shirt，不知道现在还能不能买到 :D
用的< canvas>，所以ie下肯定是看不到了。源码不到一百行，见这里 ，稍微蛋疼了点 :p
document.write(unescape('%3Cscript%20type%3D%22text/javascript%22%20src%3D%22http%3A//ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js%22%3E%3C/script%3E%0A%3Cscript%20type%3D%22text/javascript%22%3E%0Avar%20canvas%3B%0Avar%20ctx%3B%0A%0Avar%20bricks%3B%0Avar%20ball%3B%0A%0Avar%20timer%3D0%3B%0A%0Afunction%20init%28cv%29%7B%0A%09canvas%20%3D%20cv%3B%0A%09ctx%20%3D%20cv.getContext%28%272d%27%29%3B%0A%09%0A%09ball%20%3D%20Ball%28Math.random%28%29*200%2C150%29%3B%0A%09bricks%20%3D%20Bricks%28%29%3B%0A%09%0A%09var%20self%20%3D%20%7B%0A%09%09start%3Afunction%28%29%7B%0A%09%09%09self.stop%28%29%3B%0A%09%09%09timer%20%3D%20setInterval%28function%28%29%7B%0A%09%09%09%09clear%28%29%3B%0A%09%09%09%09ball.move%28%29%3B%0A%09%09%09%09bricks.draw%28%29%3B%0A%09%09%09%09ball.draw%28%29%3B%0A%09%09%09%7D%2C%2010%29%3B%0A%09%09%09%09%20%20%0A%09%09%7D%2C%0A%09%09stop%3Afunction%28%29%7B%0A%09%09%09clearInterval%28timer%29%3B%09%20%0A%09%09%7D%2C%0A%09%09prepare%3Afunction%28%29%7B%0A%09%09%09bricks.draw%28%29%3B%09%09%0A%09%09%7D%20%0A%09%7D%3B%0A%09return%20self%3B%0A%7D%0A%0Afunction%20Bricks%28%29%7B%0A%09var%20height%3D20%2C%20width%3Dcanvas.width%20/%2015%3B%0A%09var%20self%3D%7B%0A%09%09height%3A%20height%2C%20%0A%09%09width%3A%20%20width%2C%0A%09%09matrix%3A%5B%5B1%2C1%2C1%2C1%2C0%2C1%2C1%2C1%2C1%2C0%2C1%2C0%2C1%2C0%2C1%5D%2C%0A%09%09%09%09%5B1%2C0%2C0%2C0%2C0%2C1%2C0%2C0%2C0%2C0%2C1%2C0%2C1%2C0%2C1%5D%2C%0A%09%09%09%09%5B1%2C0%2C0%2C1%2C0%2C1%2C1%2C1%2C1%2C0%2C1%2C0%2C1%2C0%2C1%5D%2C%0A%09%09%09%09%5B1%2C1%2C1%2C1%2C0%2C1%2C0%2C0%2C0%2C0%2C0%2C1%2C0%2C1%2C0%5D%5D%2C%0A%09%09draw%3Afunction%28%29%7B%0A%09%09%09for%20%28var%20i%3D0%3Bi%3Cself.matrix.length%3Bi++%29%20%7B%0A%09%09%09%09for%20%28var%20j%3D0%3Bj%3Cself.matrix%5B0%5D.length%3Bj++%29%20%7B%0A%09%09%09%09%09if%20%28self.matrix%5Bi%5D%5Bj%5D%29%20%7B%0A%09%09%09%09%09%09drawRect%28j*width%2C%20i*height%2C%20width%2C%20height%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%3B%0A%09return%20self%3B%0A%7D%0A%0A%0Afunction%20Ball%28ix%2C%20iy%29%20%7B%0A%09var%20x%3Dix%2Cy%3Diy%3B%0A%09var%20dx%3D2%2Cdy%3D4%3B%0A%09var%20r%3D10%3B%0A%09var%20self%3D%7B%0A%09%09move%3Afunction%28%29%7B%0A%09%09%09//hit%20the%20edge%20%3F%0A%09%09%09if%20%28x%3E%28canvas.width-r%29%20%7C%7C%20x%3Cr/2%29%20%7B%0A%09%09%09%09dx*%3D%28-1%29%3B%0A%09%09%09%7D%0A%09%09%09if%20%28y%3E%28canvas.height-r%29%20%7C%7C%20y%3Cr/2%29%20%7B%0A%09%09%09%09dy*%3D%28-1%29%3B%0A%09%09%09%7D%0A%09%09%09//hit%20a%20brick%3F%0A%09%09%09b_width%3Dbricks.width%3B%20b_height%3Dbricks.height%3B%0A%09%09%09rows%3Dbricks.matrix.length%3B%20cols%3Dbricks.matrix%5B0%5D.length%3B%0A%09%09%09row%20%3D%20Math.floor%28y/b_height%29%3B%0A%09%09%09col%20%3D%20Math.floor%28x/b_width%29%3B%0A%09%09%09if%20%28y%20%3C%20b_height%20*%20rows%20%26%26%20row%3E%3D0%20%26%26%20col%3E%3D0%20%26%26%20bricks.matrix%5Brow%5D%5Bcol%5D%29%7B%0A%09%09%09%09bricks.matrix%5Brow%5D%5Bcol%5D%3D0%3B%0A%09%09%09%09dy*%3D%28-1%29%3B%0A%09%09%09%7D%0A%0A%09%09%09x+%3Ddx%3B%20y+%3Ddy%3B%0A%09%09%7D%2C%0A%09%09draw%3Afunction%28%29%7B%0A%09%09%09drawCircle%28x%2Cy%2Cr%29%3B%0A%09%09%7D%2C%0A%09%7D%3B%0A%09return%20self%3B%0A%7D%0A%0A%0Afunction%20clear%28%29%7B%0A%09ctx.clearRect%280%2C0%2Ccanvas.width%2Ccanvas.height%29%3B%0A%7D%0A%0Afunction%20drawRect%28x%2Cy%2Cw%2Ch%29%7B%0A%09ctx.beginPath%28%29%3B%0A%09ctx.rect%28x%2Cy%2Cw%2Ch%29%3B%0A%09ctx.closePath%28%29%3B%0A%09ctx.fill%28%29%3B%0A%7D%0Afunction%20drawCircle%28x%2Cy%2Cr%29%7B%0A%09ctx.beginPath%28%29%3B%0A%09ctx.arc%28x%2C%20y%2C%20r%2C%200%2C%20Math.PI*2%2C%20true%29%3B%0A%09ctx.closePath%28%29%3B%0A%09ctx.fill%28%29%3B%0A%7D%0A%0A%3C/script%3E%0A%09%09%3Cp%3E%3Ccanvas%20id%3D%22canvas%22%20width%3D%22400%22%20height%3D%22200%22%3E%20%3C/canvas%3E%3C/p%3E%0A%09%09%3Cbutton%20id%3D%22btn%22%3Ebreak%20it%21%3C/button%3E%0A%0A%09%09%3Cscript%20type%3D%22text/javascript%22%3E%0A%09%09%09%09var%20canvas%20%3D%20%24%28%27%23canvas%27%29%5B0%5D%3B%0A%09%09%09%09player%20%3D%20init%28canvas%29%3B%0A%09%09%09%09player.prepare%28%29%3B%0A%09%09%09%09%24%28%27%23btn%27%29.bind%28%27click%27%2Cfunction%28%29%7B%0A%09%09%09%09%09var%20canvas%20%3D%20%24%28%27%23canvas%27%29%5B0%5D%3B%0A%09%09%09%09%09player%20%3D%20init%28canvas%29%3B%0A%09%09%09%09%09player.start%28%29%3B%0A%09%09%09%09%7D%29%3B%09%0A%09%09%3C/script%3E'));
]]></description>
			<content:encoded><![CDATA[<p>灵感来自HelloTee的<a href="http://hellotee.com/break-the-gfw.tee">这件shirt</a>，不知道现在还能不能买到 :D</p>
<p>用的< canvas>，所以ie下肯定是看不到了。源码不到一百行，见<a href="http://code.google.com/p/kick-gfw/source/browse/#svn/trunk">这里</a> ，稍微蛋疼了点 :p</p>
<p><script type="text/javascript">document.write(unescape('%3Cscript%20type%3D%22text/javascript%22%20src%3D%22http%3A//ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js%22%3E%3C/script%3E%0A%3Cscript%20type%3D%22text/javascript%22%3E%0Avar%20canvas%3B%0Avar%20ctx%3B%0A%0Avar%20bricks%3B%0Avar%20ball%3B%0A%0Avar%20timer%3D0%3B%0A%0Afunction%20init%28cv%29%7B%0A%09canvas%20%3D%20cv%3B%0A%09ctx%20%3D%20cv.getContext%28%272d%27%29%3B%0A%09%0A%09ball%20%3D%20Ball%28Math.random%28%29*200%2C150%29%3B%0A%09bricks%20%3D%20Bricks%28%29%3B%0A%09%0A%09var%20self%20%3D%20%7B%0A%09%09start%3Afunction%28%29%7B%0A%09%09%09self.stop%28%29%3B%0A%09%09%09timer%20%3D%20setInterval%28function%28%29%7B%0A%09%09%09%09clear%28%29%3B%0A%09%09%09%09ball.move%28%29%3B%0A%09%09%09%09bricks.draw%28%29%3B%0A%09%09%09%09ball.draw%28%29%3B%0A%09%09%09%7D%2C%2010%29%3B%0A%09%09%09%09%20%20%0A%09%09%7D%2C%0A%09%09stop%3Afunction%28%29%7B%0A%09%09%09clearInterval%28timer%29%3B%09%20%0A%09%09%7D%2C%0A%09%09prepare%3Afunction%28%29%7B%0A%09%09%09bricks.draw%28%29%3B%09%09%0A%09%09%7D%20%0A%09%7D%3B%0A%09return%20self%3B%0A%7D%0A%0Afunction%20Bricks%28%29%7B%0A%09var%20height%3D20%2C%20width%3Dcanvas.width%20/%2015%3B%0A%09var%20self%3D%7B%0A%09%09height%3A%20height%2C%20%0A%09%09width%3A%20%20width%2C%0A%09%09matrix%3A%5B%5B1%2C1%2C1%2C1%2C0%2C1%2C1%2C1%2C1%2C0%2C1%2C0%2C1%2C0%2C1%5D%2C%0A%09%09%09%09%5B1%2C0%2C0%2C0%2C0%2C1%2C0%2C0%2C0%2C0%2C1%2C0%2C1%2C0%2C1%5D%2C%0A%09%09%09%09%5B1%2C0%2C0%2C1%2C0%2C1%2C1%2C1%2C1%2C0%2C1%2C0%2C1%2C0%2C1%5D%2C%0A%09%09%09%09%5B1%2C1%2C1%2C1%2C0%2C1%2C0%2C0%2C0%2C0%2C0%2C1%2C0%2C1%2C0%5D%5D%2C%0A%09%09draw%3Afunction%28%29%7B%0A%09%09%09for%20%28var%20i%3D0%3Bi%3Cself.matrix.length%3Bi++%29%20%7B%0A%09%09%09%09for%20%28var%20j%3D0%3Bj%3Cself.matrix%5B0%5D.length%3Bj++%29%20%7B%0A%09%09%09%09%09if%20%28self.matrix%5Bi%5D%5Bj%5D%29%20%7B%0A%09%09%09%09%09%09drawRect%28j*width%2C%20i*height%2C%20width%2C%20height%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%3B%0A%09return%20self%3B%0A%7D%0A%0A%0Afunction%20Ball%28ix%2C%20iy%29%20%7B%0A%09var%20x%3Dix%2Cy%3Diy%3B%0A%09var%20dx%3D2%2Cdy%3D4%3B%0A%09var%20r%3D10%3B%0A%09var%20self%3D%7B%0A%09%09move%3Afunction%28%29%7B%0A%09%09%09//hit%20the%20edge%20%3F%0A%09%09%09if%20%28x%3E%28canvas.width-r%29%20%7C%7C%20x%3Cr/2%29%20%7B%0A%09%09%09%09dx*%3D%28-1%29%3B%0A%09%09%09%7D%0A%09%09%09if%20%28y%3E%28canvas.height-r%29%20%7C%7C%20y%3Cr/2%29%20%7B%0A%09%09%09%09dy*%3D%28-1%29%3B%0A%09%09%09%7D%0A%09%09%09//hit%20a%20brick%3F%0A%09%09%09b_width%3Dbricks.width%3B%20b_height%3Dbricks.height%3B%0A%09%09%09rows%3Dbricks.matrix.length%3B%20cols%3Dbricks.matrix%5B0%5D.length%3B%0A%09%09%09row%20%3D%20Math.floor%28y/b_height%29%3B%0A%09%09%09col%20%3D%20Math.floor%28x/b_width%29%3B%0A%09%09%09if%20%28y%20%3C%20b_height%20*%20rows%20%26%26%20row%3E%3D0%20%26%26%20col%3E%3D0%20%26%26%20bricks.matrix%5Brow%5D%5Bcol%5D%29%7B%0A%09%09%09%09bricks.matrix%5Brow%5D%5Bcol%5D%3D0%3B%0A%09%09%09%09dy*%3D%28-1%29%3B%0A%09%09%09%7D%0A%0A%09%09%09x+%3Ddx%3B%20y+%3Ddy%3B%0A%09%09%7D%2C%0A%09%09draw%3Afunction%28%29%7B%0A%09%09%09drawCircle%28x%2Cy%2Cr%29%3B%0A%09%09%7D%2C%0A%09%7D%3B%0A%09return%20self%3B%0A%7D%0A%0A%0Afunction%20clear%28%29%7B%0A%09ctx.clearRect%280%2C0%2Ccanvas.width%2Ccanvas.height%29%3B%0A%7D%0A%0Afunction%20drawRect%28x%2Cy%2Cw%2Ch%29%7B%0A%09ctx.beginPath%28%29%3B%0A%09ctx.rect%28x%2Cy%2Cw%2Ch%29%3B%0A%09ctx.closePath%28%29%3B%0A%09ctx.fill%28%29%3B%0A%7D%0Afunction%20drawCircle%28x%2Cy%2Cr%29%7B%0A%09ctx.beginPath%28%29%3B%0A%09ctx.arc%28x%2C%20y%2C%20r%2C%200%2C%20Math.PI*2%2C%20true%29%3B%0A%09ctx.closePath%28%29%3B%0A%09ctx.fill%28%29%3B%0A%7D%0A%0A%3C/script%3E%0A%09%09%3Cp%3E%3Ccanvas%20id%3D%22canvas%22%20width%3D%22400%22%20height%3D%22200%22%3E%20%3C/canvas%3E%3C/p%3E%0A%09%09%3Cbutton%20id%3D%22btn%22%3Ebreak%20it%21%3C/button%3E%0A%0A%09%09%3Cscript%20type%3D%22text/javascript%22%3E%0A%09%09%09%09var%20canvas%20%3D%20%24%28%27%23canvas%27%29%5B0%5D%3B%0A%09%09%09%09player%20%3D%20init%28canvas%29%3B%0A%09%09%09%09player.prepare%28%29%3B%0A%09%09%09%09%24%28%27%23btn%27%29.bind%28%27click%27%2Cfunction%28%29%7B%0A%09%09%09%09%09var%20canvas%20%3D%20%24%28%27%23canvas%27%29%5B0%5D%3B%0A%09%09%09%09%09player%20%3D%20init%28canvas%29%3B%0A%09%09%09%09%09player.start%28%29%3B%0A%09%09%09%09%7D%29%3B%09%0A%09%09%3C/script%3E'));</script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.fleurer-lee.com/2009/07/15/break-the-wall/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
	</channel>
</rss>
