<?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>动力男孩flash乐园</title>
	<atom:link href="http://www.p-boy.cn/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.p-boy.cn</link>
	<description>不抛弃、不放弃，梦想要迂回去实现~！</description>
	<lastBuildDate>Wed, 19 May 2010 18:08:47 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.3</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		
<!-- Start Of Script Generated By WP-PostViews Plus -->
<script type='text/javascript' src='http://123.125.97.156/wordpress/wp-includes/js/jquery/jquery.js?ver=1.3.2'></script>
<script type="text/javascript">
/* <![CDATA[ */
/* ]]> */
</script>
<!-- End Of Script Generated By WP-PostViews Plus -->
	<item>
		<title>浅谈工具的意义</title>
		<link>http://www.p-boy.cn/?p=519</link>
		<comments>http://www.p-boy.cn/?p=519#comments</comments>
		<pubDate>Wed, 19 May 2010 18:08:47 +0000</pubDate>
		<dc:creator>powerboy</dc:creator>
				<category><![CDATA[心情驿站]]></category>
		<category><![CDATA[心情]]></category>

		<guid isPermaLink="false">http://www.p-boy.cn/?p=519</guid>
		<description><![CDATA[声明：以下文章是本人在学习过程中总结的一些个人经验，如果需要复制，请务必注明出处：http://www.p-boy.cn
　　工具，是一把利器，做事情需要讲究方式方法，如果做事情时选择了合适的工具，可以让你的做事效率事半功倍。工具，可以是有形的也可以是无形的。但是，什么样的工具适合自己，怎样来选择适合自己的工具呢，这是每个人都需要努力去研究的话题。
　　不管是哪家公司，都可能遇到过这种情况：在同一个项目里，每个部门的职能各不相同，有时候会发现项目推进的很困难，部门之间会相互推卸责任、扯皮，尤其越大的公司表现的越明显。究其原因，很多人可能会说这样的话，例如：项目需求不明确、这个问题应该XXX来负责、这个问题我以前都讲过等等之类的话。其实我们回过头来仔细想想，这些部门的领导们是否以身作则了呢？正有一句话所谓：有什么样的领导，就有什么样的团队。这的确是有根据的，领导就相当于航海中的信号灯，当船只在遇到大雾而迷路的时候，它能够指明方向，让大家跳出现有的困境而向前看。一旦这个时候没有了信号灯或者信号灯给错了方向，那么整只船队也就跟着一起陷进去了。所以对于领导的团队管理，是一定要讲究方法的。如果领导能够观察到每个成员的工作方式，也许就会用自己的经验去帮助他们改进；如果能够跟踪到每个成员的项目进度，也许就会更好的安排工作周期；如果能够关注一下其他团队目前的现状和所需要协助的地方，也许就会避免团队之间走更多的弯路。
但是假设上面的条件都满足就可以了吗，显然这里面还有一个执行力的问题，如果这一条不满足，纵使你有再多的管理经验也无济于事。既然我们谈到了执行力，就不得不谈“威信”二字，你可以有“威”，但是没有“信”的话，恐怕“威”也很难持久。如果想要每个成员都“信”你，必然要经历一个长期而持续的过程，而这个过程，恰恰也是对领导的一个考验。
　　备注：
　　有形的工具：各种软件（例如Redmine、Project等等）。
　　无形的工具：沟通技巧、解决问题的方式、意识（例如遇到问题，知道需要向谁寻求协助）
]]></description>
			<content:encoded><![CDATA[<p><strong>声明：以下文章是本人在学习过程中总结的一些个人经验，如果需要复制，请务必注明出处：<a href="http://123.125.97.156/wordpress/go.php?http://www.p-boy.cn" target="blank" title="(10 hits)">http://www.p-boy.cn</a></strong></p>
<p>　　工具，是一把利器，做事情需要讲究方式方法，如果做事情时选择了合适的工具，可以让你的做事效率事半功倍。工具，可以是有形的也可以是无形的。但是，什么样的工具适合自己，怎样来选择适合自己的工具呢，这是每个人都需要努力去研究的话题。<br />
　　不管是哪家公司，都可能遇到过这种情况：在同一个项目里，每个部门的职能各不相同，有时候会发现项目推进的很困难，部门之间会相互推卸责任、扯皮，尤其越大的公司表现的越明显。究其原因，很多人可能会说这样的话，例如：项目需求不明确、这个问题应该XXX来负责、这个问题我以前都讲过等等之类的话。其实我们回过头来仔细想想，这些部门的领导们是否以身作则了呢？正有一句话所谓：有什么样的领导，就有什么样的团队。这的确是有根据的，领导就相当于航海中的信号灯，当船只在遇到大雾而迷路的时候，它能够指明方向，让大家跳出现有的困境而向前看。一旦这个时候没有了信号灯或者信号灯给错了方向，那么整只船队也就跟着一起陷进去了。所以对于领导的团队管理，是一定要讲究方法的。如果领导能够观察到每个成员的工作方式，也许就会用自己的经验去帮助他们改进；如果能够跟踪到每个成员的项目进度，也许就会更好的安排工作周期；如果能够关注一下其他团队目前的现状和所需要协助的地方，也许就会避免团队之间走更多的弯路。<br />
但是假设上面的条件都满足就可以了吗，显然这里面还有一个执行力的问题，如果这一条不满足，纵使你有再多的管理经验也无济于事。既然我们谈到了执行力，就不得不谈“威信”二字，你可以有“威”，但是没有“信”的话，恐怕“威”也很难持久。如果想要每个成员都“信”你，必然要经历一个长期而持续的过程，而这个过程，恰恰也是对领导的一个考验。</p>
<p>　　备注：<br />
　　有形的工具：各种软件（例如Redmine、Project等等）。<br />
　　无形的工具：沟通技巧、解决问题的方式、意识（例如遇到问题，知道需要向谁寻求协助）</p>
]]></content:encoded>
			<wfw:commentRss>http://www.p-boy.cn/?feed=rss2&amp;p=519</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>“小小便利店”终于上线啦</title>
		<link>http://www.p-boy.cn/?p=517</link>
		<comments>http://www.p-boy.cn/?p=517#comments</comments>
		<pubDate>Wed, 19 May 2010 18:05:56 +0000</pubDate>
		<dc:creator>powerboy</dc:creator>
				<category><![CDATA[心情驿站]]></category>
		<category><![CDATA[我的新闻]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[心情]]></category>
		<category><![CDATA[新闻]]></category>

		<guid isPermaLink="false">http://www.p-boy.cn/?p=517</guid>
		<description><![CDATA[　　自从新换了工作之后，就一直没怎么再更新博客了，每天的时间都安排的满满的，今天借着推出这款小游戏的机会，赶紧踩个脚印。本来计划这款游戏半个月完成，但由于平时的工作太忙，导致我一周只有一天的开发时间，这款游戏在经历了2个多月之后才浮出水面，现在还仍然在完善中。
　　目前正在跟人人网合作，在此感谢跟我一起奋斗的兄弟们，没有大家的共同努力，这款游戏是永远也不会有成功的基因的。
　　游戏地址：http://page.renren.com/littlecvs/index
]]></description>
			<content:encoded><![CDATA[<p>　　自从新换了工作之后，就一直没怎么再更新博客了，每天的时间都安排的满满的，今天借着推出这款小游戏的机会，赶紧踩个脚印。本来计划这款游戏半个月完成，但由于平时的工作太忙，导致我一周只有一天的开发时间，这款游戏在经历了2个多月之后才浮出水面，现在还仍然在完善中。<br />
　　目前正在跟人人网合作，在此感谢跟我一起奋斗的兄弟们，没有大家的共同努力，这款游戏是永远也不会有成功的基因的。<br />
　　游戏地址：http://page.renren.com/littlecvs/index</p>
]]></content:encoded>
			<wfw:commentRss>http://www.p-boy.cn/?feed=rss2&amp;p=517</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>禁止按tab时焦点从flash切换到地址栏</title>
		<link>http://www.p-boy.cn/?p=507</link>
		<comments>http://www.p-boy.cn/?p=507#comments</comments>
		<pubDate>Thu, 04 Feb 2010 03:03:37 +0000</pubDate>
		<dc:creator>powerboy</dc:creator>
				<category><![CDATA[我收集的flash 9.0资料]]></category>
		<category><![CDATA[as3]]></category>

		<guid isPermaLink="false">http://www.p-boy.cn/?p=507</guid>
		<description><![CDATA[找了好久，终于在一个国外站点看到了解决方法：

1
2
3
4
5
6
7
8
9
&#60;script type=&#34;text/javascript&#34;&#62;
document.onkeydown=function(){
	if(event.keyCode==9){
		event.keyCode=0;   
		event.returnValue=false;
		return false;
	}
};
&#60;/script&#62;

]]></description>
			<content:encoded><![CDATA[<p>找了好久，终于在一个国外站点看到了解决方法：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
</pre></td><td class="code"><pre class="js" style="font-family:monospace;">&lt;script type=&quot;text/javascript&quot;&gt;
document.onkeydown=function(){
	if(event.keyCode==9){
		event.keyCode=0;   
		event.returnValue=false;
		return false;
	}
};
&lt;/script&gt;</pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.p-boy.cn/?feed=rss2&amp;p=507</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>隐藏Flex滚动条的箭头和滑竿</title>
		<link>http://www.p-boy.cn/?p=493</link>
		<comments>http://www.p-boy.cn/?p=493#comments</comments>
		<pubDate>Mon, 28 Dec 2009 14:40:46 +0000</pubDate>
		<dc:creator>powerboy</dc:creator>
				<category><![CDATA[flex学习笔记]]></category>
		<category><![CDATA[flex]]></category>

		<guid isPermaLink="false">http://www.p-boy.cn/?p=493</guid>
		<description><![CDATA[
1
2
3
4
5
.myCustomScrollBarStyleName &#123;
	downArrowSkin:		ClassReference&#40;null&#41;;
	upArrowSkin:		ClassReference&#40;null&#41;;
	thumbSkin:		ClassReference&#40;null&#41;;
&#125;

]]></description>
			<content:encoded><![CDATA[
<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code"><pre class="css" style="font-family:monospace;"><span style="color: #6666ff;">.myCustomScrollBarStyleName</span> <span style="color: #00AA00;">&#123;</span>
	downArrowSkin<span style="color: #00AA00;">:</span>		ClassReference<span style="color: #00AA00;">&#40;</span>null<span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span>
	upArrowSkin<span style="color: #00AA00;">:</span>		ClassReference<span style="color: #00AA00;">&#40;</span>null<span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span>
	thumbSkin<span style="color: #00AA00;">:</span>		ClassReference<span style="color: #00AA00;">&#40;</span>null<span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.p-boy.cn/?feed=rss2&amp;p=493</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>为asdoc设定example</title>
		<link>http://www.p-boy.cn/?p=488</link>
		<comments>http://www.p-boy.cn/?p=488#comments</comments>
		<pubDate>Wed, 16 Dec 2009 03:10:09 +0000</pubDate>
		<dc:creator>powerboy</dc:creator>
				<category><![CDATA[actionscript3.0学习笔记]]></category>
		<category><![CDATA[flash教程]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[教程]]></category>

		<guid isPermaLink="false">http://www.p-boy.cn/?p=488</guid>
		<description><![CDATA[我们在使用官方API文档的时候]]></description>
			<content:encoded><![CDATA[<p>　　最近在学习用asdoc生成文档，我们在使用官方API文档的时候，都能看到有些类的底部会有关于这个类是如何使用的例子，他是如何做到的呢，其实用的就是这个指令：@includeExample xxx/example.as，在它后面跟的是例子的路径，但是有一点，我们不能因为想要写个小例子，就把它放在跟类相同的路径下吧，这会非常糟糕的，我们更希望把例子集中在一个文件夹下统一管理，有什么好办法吗，答案是肯定的。我们需要在编译语句后面加上-examples-path [盘符]:\[路径]，它指的就是我们存放例子的路径，但是一定要记住，存放example的路径最好跟类文件的路径是一样的，这样管理起来更方便。比如我把框架放在d盘名为powerboy的目录下，框架里有个cn.pboy.control.Button的类，它的路径看起来像这样：d:\powerboy\cn\pboy\control\Button.as，现在我要对这个类添加例子，我想把例子统一放在d盘的examples文件夹下统一管理，那么路径应该是这样的：d:\examples\cn\pboy\control\ButtonExample.as，然后在命令行工具下把当前盘符设为d:\powerboy>，通过以下命名就可以编译了：asdoc -source-path . -doc-sources . -examples-path d:\examples</p>
]]></content:encoded>
			<wfw:commentRss>http://www.p-boy.cn/?feed=rss2&amp;p=488</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>一个测试睡眠的例子</title>
		<link>http://www.p-boy.cn/?p=477</link>
		<comments>http://www.p-boy.cn/?p=477#comments</comments>
		<pubDate>Fri, 27 Nov 2009 10:05:57 +0000</pubDate>
		<dc:creator>powerboy</dc:creator>
				<category><![CDATA[Box2D]]></category>
		<category><![CDATA[我的AS3实验室]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[flash]]></category>

		<guid isPermaLink="false">http://www.p-boy.cn/?p=477</guid>
		<description><![CDATA[　　这里给出一个小例子，方便大家看到是否设置睡眠的区别。右上角的5个按钮代表重力方向，他们都是用向量模拟的，中间的按钮“无”代表失重状态。关于睡眠设置，默认是禁止睡眠，点击右侧按钮可以切换状态。通过观察你可以发现，当所有小球停止运动的时候，如果是禁止睡眠，当你改变重力方向的时候它们仍然可以运动，如果是允许睡眠的话，你会发现他们确实睡的跟死猪一样，一动不动。

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_MoveBall_2076971273"
			class="flashmovie"
			width="645"
			height="400">
	<param name="movie" value="http://www.p-boy.cn/showFlash/box2d/MoveBall.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://www.p-boy.cn/showFlash/box2d/MoveBall.swf"
			name="fm_MoveBall_2076971273"
			width="645"
			height="400">
	<!--<![endif]-->
		


	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
　　需要看源码的朋友，请在下方留言，留下你的邮箱地址，我会尽快回复你的。
]]></description>
			<content:encoded><![CDATA[<p>　　这里给出一个小例子，方便大家看到是否设置睡眠的区别。右上角的5个按钮代表重力方向，他们都是用向量模拟的，中间的按钮“无”代表失重状态。关于睡眠设置，默认是禁止睡眠，点击右侧按钮可以切换状态。通过观察你可以发现，当所有小球停止运动的时候，如果是禁止睡眠，当你改变重力方向的时候它们仍然可以运动，如果是允许睡眠的话，你会发现他们确实睡的跟死猪一样，一动不动。</p>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_MoveBall_965911727"
			class="flashmovie"
			width="645"
			height="400">
	<param name="movie" value="http://www.p-boy.cn/showFlash/box2d/MoveBall.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://www.p-boy.cn/showFlash/box2d/MoveBall.swf"
			name="fm_MoveBall_965911727"
			width="645"
			height="400">
	<!--<![endif]-->
		
<p><a href="http://123.125.97.156/wordpress/go.php?http://adobe.com/go/getflashplayer" title="(39 hits)"><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>　　需要看源码的朋友，请在下方留言，留下你的邮箱地址，我会尽快回复你的。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.p-boy.cn/?feed=rss2&amp;p=477</wfw:commentRss>
		<slash:comments>31</slash:comments>
		</item>
		<item>
		<title>Box2D——入门教程</title>
		<link>http://www.p-boy.cn/?p=473</link>
		<comments>http://www.p-boy.cn/?p=473#comments</comments>
		<pubDate>Fri, 27 Nov 2009 03:50:23 +0000</pubDate>
		<dc:creator>powerboy</dc:creator>
				<category><![CDATA[Box2D]]></category>
		<category><![CDATA[flash教程]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[教程]]></category>

		<guid isPermaLink="false">http://www.p-boy.cn/?p=473</guid>
		<description><![CDATA[声明：以下文章是本人在学习过程中总结的一些个人经验，如果需要复制，请务必注明出处：http://www.p-boy.cn
　　现在网上关于as3的物理引擎真是不少，比较之后发现，在开源引擎当中Box2D算是比较不错的了，只可惜他的结构比较复杂，而且国内网站关于Box2D方面的教程真是少的可怜。因为我知道这个最早是c++上面的2D引擎，所以我找到了http://www.box2d.org/manual.html网址，经过几天的研究，总算是入门了，下面我会系统的针对官网给出的HelloWorld程序进行讲解，把个人心得分享给大家（鼓掌）!
　　这个引擎是先从创建一个世界对象开始的，他负责管理内部一切对象的内存和模拟过程。要创建一个世界中的对象，首先我们需要为世界定义边界区域，Box2D针对区域内的所有对象进行模拟碰撞，区域的大小并不重要，但更适合的区域将提高程序性能，一般来讲这个区域设置的要比演示区域更大一些，因为一旦对象在运动时到达了边界，它就会被“冻结”并停止一切模拟活动。

var worldAABB:b2AABB = new b2AABB&#40;&#41;;
worldAABB.lowerBound.Set&#40;-100,-100&#41;;//左边界、上边界
worldAABB.upperBound.Set&#40;100,100&#41;;//右边界、下边界

　　下面我们要为这个世界设置重力了，就是下面这段代码，其实这里面的重力是用向量b2Vec2(x,y);来表示的，x代表水平运动，正数向右，负数向左，y代表垂直运动，正数向下，负数向上。同时我们需要再定义一个布尔型参数（我命名为doSleep），来表示是否允许睡眠，睡眠所代表的含义网上也没有一个明确的介绍，这里我简要讲解一下。因为你在这个世界中生成的一切对象，他们的模拟效果都是实时计算出来的，当doSleep=false的时候，即使物体停止了运动，计算机还是在不停的进行着运算，其实这是完全不必要的，所以一般都设为true，这样当物体停止之后就不会进行无谓的cpu消耗了。

var gravity:b2Vec2 = new b2Vec2&#40;0,10&#41;;
var doSleep:Boolean = true;

　　以上参数都准备好了，我们可以将它们传入b2World对象中并将其实例化，这样一个物理引擎的模拟区域就做好了。

var world:b2World = new b2World&#40;worldAABB,gravity,doSleep&#41;;

　　让我们开始在其中加入你想要模拟的对象吧。本来在那个英文网站中给出的是5个步骤，但是我感觉还少点什么，所以我又加了一条：
第一步、创建并定义刚体位置。这里我做一下名词解释，在任何力的作用下，体积和形状都不发生改变的物体叫做“刚体”；

var ground:b2BodyDef = new b2BodyDef&#40;&#41;;
ground.position.Set&#40;10, 12&#41;;//这里的位置也是用向量定义的

2、给刚体定义皮肤（注意这里的皮肤并不具备物理引擎的属性，因此才有了第四步）；

bodyDef.userData = _mc;//我们自己绘制的图形
addChild&#40;bodyDef.userData&#41;;

3、用世界对象添加刚体实例，需要注意的是世界对象里并没有保存body定义的引用；

var body:b2Body = world.CreateBody&#40;bodyDef&#41;;

4、根据皮肤形状创建模拟图形类：摩擦力、密度、弹力等等；当密度为0的时候，物体是不会动的，相当于障碍物。摩擦力和弹力取值范围是0~1，形状的区域是由SetAsBox定义的，因为模拟图形和刚体都要求以中心点为注册点，因此这里的宽和高的值都是一半，同时需要注意，这里数值单位并不是像素，而是米，1米=30像素，大家在传值的时候可别忘记换算哦。

var box:b2PolygonDef = new b2PolygonDef&#40;&#41;;//创建多边形
box.density = _density;
box.friction = _friction;
box.restitution = _restitution;
box.SetAsBox&#40;_halfWidth , _halfHeight&#41;;

5、在刚体上添加模拟图形实例；

body.CreateShape&#40;box&#41;;

6、根据刚体的密度和面积计算出质量，密度*面积=质量。

body.SetMassFromShapes&#40;&#41;;

　　这里有两个重要的参数需要我们自己定义一下。一个是迭代次数，这里我定义为m_iterations，建议迭代次数为10，这时一个比较合理的值，使用较少的迭代可以提高性能，但模拟质量受到影响。同样，使用更多的迭代性能有所下降，但提高了你的模拟质量。另外一个参数是游戏的刷新频率，我定义为m_timeStep，根据英文教程上记载，它采用的是1/60秒刷新一次，但因为它的平台是c++，性能比AVM2虚拟机高出数倍，完全可以这么做，而在flash中我们一般设置成1/30就可以了。

var m_iterations:Number = 10;
var m_timeStep:Number = 1 / 30;

　　现在一切都准备好了，我们要让所有对象模拟运动。其实他也是通过侦听帧频率而不断刷新实现的，把上面那两个参数传入世界对象的Step方法中即可，同时我们需要遍历世界中的一切对象，并对每个对象的坐标和角度进行更新。

addEventListener&#40;Event.ENTER_FRAME, Update, false, 0, true&#41;;
function Update&#40;e:Event&#41;:void
&#123;
	world.Step&#40;m_timeStep, m_iterations&#41;;
	for &#40;var bb:b2Body=world.m_bodyList; bb; [...]]]></description>
			<content:encoded><![CDATA[<p><strong>声明：以下文章是本人在学习过程中总结的一些个人经验，如果需要复制，请务必注明出处：<a href="http://123.125.97.156/wordpress/go.php?http://www.p-boy.cn" target="blank" title="(10 hits)">http://www.p-boy.cn</a></strong></p>
<p>　　现在网上关于as3的物理引擎真是不少，比较之后发现，在开源引擎当中Box2D算是比较不错的了，只可惜他的结构比较复杂，而且国内网站关于Box2D方面的教程真是少的可怜。因为我知道这个最早是c++上面的2D引擎，所以我找到了<a href="http://123.125.97.156/wordpress/go.php?http://www.box2d.org/manual.html" target="blank" title="(No click)">http://www.box2d.org/manual.html</a>网址，经过几天的研究，总算是入门了，下面我会系统的针对官网给出的HelloWorld程序进行讲解，把个人心得分享给大家（鼓掌）!</p>
<p>　　这个引擎是先从创建一个世界对象开始的，他负责管理内部一切对象的内存和模拟过程。要创建一个世界中的对象，首先我们需要为世界定义边界区域，Box2D针对区域内的所有对象进行模拟碰撞，区域的大小并不重要，但更适合的区域将提高程序性能，一般来讲这个区域设置的要比演示区域更大一些，因为一旦对象在运动时到达了边界，它就会被“冻结”并停止一切模拟活动。</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">var</span> worldAABB:b2AABB = <span style="color: #000000; font-weight: bold;">new</span> b2AABB<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
worldAABB.<span style="color: #006600;">lowerBound</span>.<span style="color: #0066CC;">Set</span><span style="color: #66cc66;">&#40;</span>-<span style="color: #cc66cc;">100</span>,-<span style="color: #cc66cc;">100</span><span style="color: #66cc66;">&#41;</span>;<span style="color: #808080; font-style: italic;">//左边界、上边界</span>
worldAABB.<span style="color: #006600;">upperBound</span>.<span style="color: #0066CC;">Set</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">100</span>,<span style="color: #cc66cc;">100</span><span style="color: #66cc66;">&#41;</span>;<span style="color: #808080; font-style: italic;">//右边界、下边界</span></pre></div></div>

<p>　　下面我们要为这个世界设置重力了，就是下面这段代码，其实这里面的重力是用向量b2Vec2(x,y);来表示的，x代表水平运动，正数向右，负数向左，y代表垂直运动，正数向下，负数向上。同时我们需要再定义一个布尔型参数（我命名为doSleep），来表示是否允许睡眠，睡眠所代表的含义网上也没有一个明确的介绍，这里我简要讲解一下。因为你在这个世界中生成的一切对象，他们的模拟效果都是实时计算出来的，当doSleep=false的时候，即使物体停止了运动，计算机还是在不停的进行着运算，其实这是完全不必要的，所以一般都设为true，这样当物体停止之后就不会进行无谓的cpu消耗了。</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">var</span> gravity:b2Vec2 = <span style="color: #000000; font-weight: bold;">new</span> b2Vec2<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">10</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #000000; font-weight: bold;">var</span> doSleep:<span style="color: #0066CC;">Boolean</span> = <span style="color: #000000; font-weight: bold;">true</span>;</pre></div></div>

<p>　　以上参数都准备好了，我们可以将它们传入b2World对象中并将其实例化，这样一个物理引擎的模拟区域就做好了。</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">var</span> world:b2World = <span style="color: #000000; font-weight: bold;">new</span> b2World<span style="color: #66cc66;">&#40;</span>worldAABB,gravity,doSleep<span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p>　　让我们开始在其中加入你想要模拟的对象吧。本来在那个英文网站中给出的是5个步骤，但是我感觉还少点什么，所以我又加了一条：<br />
第一步、创建并定义刚体位置。这里我做一下名词解释，在任何力的作用下，体积和形状都不发生改变的物体叫做“刚体”；</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">var</span> ground:b2BodyDef = <span style="color: #000000; font-weight: bold;">new</span> b2BodyDef<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
ground.<span style="color: #0066CC;">position</span>.<span style="color: #0066CC;">Set</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">10</span>, <span style="color: #cc66cc;">12</span><span style="color: #66cc66;">&#41;</span>;<span style="color: #808080; font-style: italic;">//这里的位置也是用向量定义的</span></pre></div></div>

<p>2、给刚体定义皮肤（注意这里的皮肤并不具备物理引擎的属性，因此才有了第四步）；</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;">bodyDef.<span style="color: #006600;">userData</span> = _mc;<span style="color: #808080; font-style: italic;">//我们自己绘制的图形</span>
addChild<span style="color: #66cc66;">&#40;</span>bodyDef.<span style="color: #006600;">userData</span><span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p>3、用世界对象添加刚体实例，需要注意的是世界对象里并没有保存body定义的引用；</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">var</span> body:b2Body = world.<span style="color: #006600;">CreateBody</span><span style="color: #66cc66;">&#40;</span>bodyDef<span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p>4、根据皮肤形状创建模拟图形类：摩擦力、密度、弹力等等；当密度为0的时候，物体是不会动的，相当于障碍物。摩擦力和弹力取值范围是0~1，形状的区域是由SetAsBox定义的，因为模拟图形和刚体都要求以中心点为注册点，因此这里的宽和高的值都是一半，同时需要注意，这里数值单位并不是像素，而是米，1米=30像素，大家在传值的时候可别忘记换算哦。</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">var</span> box:b2PolygonDef = <span style="color: #000000; font-weight: bold;">new</span> b2PolygonDef<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<span style="color: #808080; font-style: italic;">//创建多边形</span>
box.<span style="color: #006600;">density</span> = _density;
box.<span style="color: #006600;">friction</span> = _friction;
box.<span style="color: #006600;">restitution</span> = _restitution;
box.<span style="color: #006600;">SetAsBox</span><span style="color: #66cc66;">&#40;</span>_halfWidth , _halfHeight<span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p>5、在刚体上添加模拟图形实例；</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;">body.<span style="color: #006600;">CreateShape</span><span style="color: #66cc66;">&#40;</span>box<span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p>6、根据刚体的密度和面积计算出质量，密度*面积=质量。</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;">body.<span style="color: #006600;">SetMassFromShapes</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p>　　这里有两个重要的参数需要我们自己定义一下。一个是迭代次数，这里我定义为m_iterations，建议迭代次数为10，这时一个比较合理的值，使用较少的迭代可以提高性能，但模拟质量受到影响。同样，使用更多的迭代性能有所下降，但提高了你的模拟质量。另外一个参数是游戏的刷新频率，我定义为m_timeStep，根据英文教程上记载，它采用的是1/60秒刷新一次，但因为它的平台是c++，性能比AVM2虚拟机高出数倍，完全可以这么做，而在flash中我们一般设置成1/30就可以了。</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">var</span> m_iterations:<span style="color: #0066CC;">Number</span> = <span style="color: #cc66cc;">10</span>;
<span style="color: #000000; font-weight: bold;">var</span> m_timeStep:<span style="color: #0066CC;">Number</span> = <span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">/</span> <span style="color: #cc66cc;">30</span>;</pre></div></div>

<p>　　现在一切都准备好了，我们要让所有对象模拟运动。其实他也是通过侦听帧频率而不断刷新实现的，把上面那两个参数传入世界对象的Step方法中即可，同时我们需要遍历世界中的一切对象，并对每个对象的坐标和角度进行更新。</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;">addEventListener<span style="color: #66cc66;">&#40;</span>Event.<span style="color: #006600;">ENTER_FRAME</span>, Update, <span style="color: #000000; font-weight: bold;">false</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #000000; font-weight: bold;">true</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #000000; font-weight: bold;">function</span> Update<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">e</span>:Event<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
<span style="color: #66cc66;">&#123;</span>
	world.<span style="color: #006600;">Step</span><span style="color: #66cc66;">&#40;</span>m_timeStep, m_iterations<span style="color: #66cc66;">&#41;</span>;
	<span style="color: #b1b100;">for</span> <span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">var</span> bb:b2Body=world.<span style="color: #006600;">m_bodyList</span>; bb; bb=bb.<span style="color: #006600;">m_next</span><span style="color: #66cc66;">&#41;</span>
	<span style="color: #66cc66;">&#123;</span>
		<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>bb.<span style="color: #006600;">m_userData</span> is Sprite<span style="color: #66cc66;">&#41;</span>
		<span style="color: #66cc66;">&#123;</span>
			bb.<span style="color: #006600;">m_userData</span>.<span style="color: #006600;">x</span>=bb.<span style="color: #006600;">GetPosition</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">x</span> <span style="color: #66cc66;">*</span> <span style="color: #cc66cc;">30</span>;<span style="color: #808080; font-style: italic;">//这里获取的变量单位是米，乘以30转换成像素单位</span>
			bb.<span style="color: #006600;">m_userData</span>.<span style="color: #006600;">y</span>=bb.<span style="color: #006600;">GetPosition</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">y</span> <span style="color: #66cc66;">*</span> <span style="color: #cc66cc;">30</span>;
			bb.<span style="color: #006600;">m_userData</span>.<span style="color: #006600;">rotation</span>=bb.<span style="color: #006600;">GetAngle</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">*</span> <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">180</span> <span style="color: #66cc66;">/</span> <span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">PI</span><span style="color: #66cc66;">&#41;</span>;
		<span style="color: #66cc66;">&#125;</span>
	<span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p>　　好了，现在相信大家已经对Box2D有了一定了解，赶快尝试制作一些效果吧。</p>
<p>　　<strong>本文出自<a href="http://123.125.97.156/wordpress/go.php?http://www.p-boy.cn/?p=473" target="blank" title="(No click)">动力男孩博客：http://www.p-boy.cn/?p=473</a></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.p-boy.cn/?feed=rss2&amp;p=473</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Box2D——shoot Demo</title>
		<link>http://www.p-boy.cn/?p=470</link>
		<comments>http://www.p-boy.cn/?p=470#comments</comments>
		<pubDate>Fri, 27 Nov 2009 01:28:00 +0000</pubDate>
		<dc:creator>powerboy</dc:creator>
				<category><![CDATA[Box2D]]></category>
		<category><![CDATA[我的AS3实验室]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[flash]]></category>

		<guid isPermaLink="false">http://www.p-boy.cn/?p=470</guid>
		<description><![CDATA[　　最近研究Box2D引擎，做了一个Demo，这个引擎结构还是比较复杂的，不过入门之后学起来就没一开始那么费力了。

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_ClickTest_1522512228"
			class="flashmovie"
			width="645"
			height="400">
	<param name="movie" value="http://www.p-boy.cn/showFlash/box2d/ClickTest.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://www.p-boy.cn/showFlash/box2d/ClickTest.swf"
			name="fm_ClickTest_1522512228"
			width="645"
			height="400">
	<!--<![endif]-->
		


	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
　　需要看源码的朋友，请在下方留言，留下你的邮箱地址，我会尽快回复你的。
]]></description>
			<content:encoded><![CDATA[<p>　　最近研究Box2D引擎，做了一个Demo，这个引擎结构还是比较复杂的，不过入门之后学起来就没一开始那么费力了。</p>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_ClickTest_208218214"
			class="flashmovie"
			width="645"
			height="400">
	<param name="movie" value="http://www.p-boy.cn/showFlash/box2d/ClickTest.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://www.p-boy.cn/showFlash/box2d/ClickTest.swf"
			name="fm_ClickTest_208218214"
			width="645"
			height="400">
	<!--<![endif]-->
		
<p><a href="http://123.125.97.156/wordpress/go.php?http://adobe.com/go/getflashplayer" title="(39 hits)"><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>　　需要看源码的朋友，请在下方留言，留下你的邮箱地址，我会尽快回复你的。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.p-boy.cn/?feed=rss2&amp;p=470</wfw:commentRss>
		<slash:comments>30</slash:comments>
		</item>
		<item>
		<title>一个由单例模式引发的问题</title>
		<link>http://www.p-boy.cn/?p=465</link>
		<comments>http://www.p-boy.cn/?p=465#comments</comments>
		<pubDate>Sat, 14 Nov 2009 10:45:52 +0000</pubDate>
		<dc:creator>powerboy</dc:creator>
				<category><![CDATA[actionscript3.0学习笔记]]></category>
		<category><![CDATA[as3]]></category>

		<guid isPermaLink="false">http://www.p-boy.cn/?p=465</guid>
		<description><![CDATA[　　最近我用一个单例模式类LoginNetManager对socket进行了封装，里面有一个send方法，专门用户向服务器发送事件，写法如下：

1
2
	LoginNetManager.getInstance&#40;&#41;.addEventListener&#40;NetEvent.SOCKET_ERROR,onConnectError&#41;;	
	LoginNetManager.getInstance&#40;&#41;.send&#40;NetEvent.LS_MSG_ADDCONNECT&#41;;

这个就是向服务器发送其中一个事件信息的语句，但奇怪的问题出现了，我在flashIDE本地进行测试的时候，一切正常，但是当我放到虚拟路径下测试的时候，它就会提示说“无法找到空对象引用的属性或方法”，我一看，问题就出在第二行那个send的方法，难道说类还没有完全实例化的时候，程序就继续向下运行了？但是这里也不存在异步执行啊，无奈之下，我修改成一个延迟语句：

1
2
	LoginNetManager.getInstance&#40;&#41;.addEventListener&#40;NetEvent.SOCKET_ERROR,onConnectError&#41;;
	setTimeout&#40;getSocket,500&#41;;

我在getSocket方法中调用那条语句，问题就都解决了。这确实很蹊跷，我承认flash在本地运行与在网页中运行的时候，执行的是不同的flash player程序，但是从这个例子来讲，不同flash player之间的差异性还是显而易见的。
]]></description>
			<content:encoded><![CDATA[<p>　　最近我用一个单例模式类LoginNetManager对socket进行了封装，里面有一个send方法，专门用户向服务器发送事件，写法如下：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
</pre></td><td class="code"><pre class="actionscript" style="font-family:monospace;">	LoginNetManager.<span style="color: #006600;">getInstance</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>NetEvent.<span style="color: #006600;">SOCKET_ERROR</span>,onConnectError<span style="color: #66cc66;">&#41;</span>;	
	LoginNetManager.<span style="color: #006600;">getInstance</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #0066CC;">send</span><span style="color: #66cc66;">&#40;</span>NetEvent.<span style="color: #006600;">LS_MSG_ADDCONNECT</span><span style="color: #66cc66;">&#41;</span>;</pre></td></tr></table></div>

<p>这个就是向服务器发送其中一个事件信息的语句，但奇怪的问题出现了，我在flashIDE本地进行测试的时候，一切正常，但是当我放到虚拟路径下测试的时候，它就会提示说“无法找到空对象引用的属性或方法”，我一看，问题就出在第二行那个send的方法，难道说类还没有完全实例化的时候，程序就继续向下运行了？但是这里也不存在异步执行啊，无奈之下，我修改成一个延迟语句：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
</pre></td><td class="code"><pre class="actionscript" style="font-family:monospace;">	LoginNetManager.<span style="color: #006600;">getInstance</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>NetEvent.<span style="color: #006600;">SOCKET_ERROR</span>,onConnectError<span style="color: #66cc66;">&#41;</span>;
	setTimeout<span style="color: #66cc66;">&#40;</span>getSocket,<span style="color: #cc66cc;">500</span><span style="color: #66cc66;">&#41;</span>;</pre></td></tr></table></div>

<p>我在getSocket方法中调用那条语句，问题就都解决了。这确实很蹊跷，我承认flash在本地运行与在网页中运行的时候，执行的是不同的flash player程序，但是从这个例子来讲，不同flash player之间的差异性还是显而易见的。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.p-boy.cn/?feed=rss2&amp;p=465</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>给图像加水印</title>
		<link>http://www.p-boy.cn/?p=459</link>
		<comments>http://www.p-boy.cn/?p=459#comments</comments>
		<pubDate>Fri, 30 Oct 2009 09:55:58 +0000</pubDate>
		<dc:creator>powerboy</dc:creator>
				<category><![CDATA[air学习笔记]]></category>
		<category><![CDATA[air]]></category>
		<category><![CDATA[as3]]></category>

		<guid isPermaLink="false">http://www.p-boy.cn/?p=459</guid>
		<description><![CDATA[　　今天应朋友需求，写了一个简单的图像加水印小软件，这个姑且叫做1.0版本吧，以后还会陆续添加更多功能。

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_Photo_860244105"
			class="flashmovie"
			width="217"
			height="180">
	<param name="movie" value="http://www.p-boy.cn/air/Photo.swf" />
	<param name="flashvars" value="appname=mp3Player&#038&amp;appurl=http://www.p-boy.cn/air/Photo.air&#038&amp;airversion=1.5&#038&amp;imageurl=http://www.p-boy.cn/air/Photo.jpg" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://www.p-boy.cn/air/Photo.swf"
			name="fm_Photo_860244105"
			width="217"
			height="180">
		<param name="flashvars" value="appname=mp3Player&#038&amp;appurl=http://www.p-boy.cn/air/Photo.air&#038&amp;airversion=1.5&#038&amp;imageurl=http://www.p-boy.cn/air/Photo.jpg" />
	<!--<![endif]-->
		


	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
]]></description>
			<content:encoded><![CDATA[<p>　　今天应朋友需求，写了一个简单的图像加水印小软件，这个姑且叫做1.0版本吧，以后还会陆续添加更多功能。<br />

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_Photo_1975028388"
			class="flashmovie"
			width="217"
			height="180">
	<param name="movie" value="http://www.p-boy.cn/air/Photo.swf" />
	<param name="flashvars" value="appname=mp3Player&#038&amp;appurl=http://www.p-boy.cn/air/Photo.air&#038&amp;airversion=1.5&#038&amp;imageurl=http://www.p-boy.cn/air/Photo.jpg" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://www.p-boy.cn/air/Photo.swf"
			name="fm_Photo_1975028388"
			width="217"
			height="180">
		<param name="flashvars" value="appname=mp3Player&#038&amp;appurl=http://www.p-boy.cn/air/Photo.air&#038&amp;airversion=1.5&#038&amp;imageurl=http://www.p-boy.cn/air/Photo.jpg" />
	<!--<![endif]-->
		
<p><a href="http://123.125.97.156/wordpress/go.php?http://adobe.com/go/getflashplayer" title="(39 hits)"><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://www.p-boy.cn/?feed=rss2&amp;p=459</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>
