<?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>ppzhu&#039;s blog</title>
	<atom:link href="http://www.ppzhu.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ppzhu.net</link>
	<description>距离是心情造成的,与肉眼无关,心情若是苍茫着,触摸到了也是遥远...</description>
	<lastBuildDate>Sun, 29 Jan 2012 02:25:33 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>移除匿名函数的侦听便捷方法</title>
		<link>http://www.ppzhu.net/2012/01/29/%e7%a7%bb%e9%99%a4%e5%8c%bf%e5%90%8d%e5%87%bd%e6%95%b0%e7%9a%84%e4%be%a6%e5%90%ac%e4%be%bf%e6%8d%b7%e6%96%b9%e6%b3%95/</link>
		<comments>http://www.ppzhu.net/2012/01/29/%e7%a7%bb%e9%99%a4%e5%8c%bf%e5%90%8d%e5%87%bd%e6%95%b0%e7%9a%84%e4%be%a6%e5%90%ac%e4%be%bf%e6%8d%b7%e6%96%b9%e6%b3%95/#comments</comments>
		<pubDate>Sun, 29 Jan 2012 02:25:33 +0000</pubDate>
		<dc:creator>ppzhu</dc:creator>
				<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://www.ppzhu.net/?p=270</guid>
		<description><![CDATA[使用arguments.callee。 arguments.callee 指当前被调用的函数。 下面是代码 ： mc.addEventListener(Event.ENTER_FRAME, function(e:Event):void{ //&#8230;.. mc.removeEventListener(Event.ENTER_FRAME, arguments.callee); });]]></description>
		<wfw:commentRss>http://www.ppzhu.net/2012/01/29/%e7%a7%bb%e9%99%a4%e5%8c%bf%e5%90%8d%e5%87%bd%e6%95%b0%e7%9a%84%e4%be%a6%e5%90%ac%e4%be%bf%e6%8d%b7%e6%96%b9%e6%b3%95/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Alchemy 再发行版发布(Win32)</title>
		<link>http://www.ppzhu.net/2011/03/04/alchemy-%e5%86%8d%e5%8f%91%e8%a1%8c%e7%89%88%e5%8f%91%e5%b8%83win32/</link>
		<comments>http://www.ppzhu.net/2011/03/04/alchemy-%e5%86%8d%e5%8f%91%e8%a1%8c%e7%89%88%e5%8f%91%e5%b8%83win32/#comments</comments>
		<pubDate>Fri, 04 Mar 2011 01:49:06 +0000</pubDate>
		<dc:creator>ppzhu</dc:creator>
				<category><![CDATA[work]]></category>
		<category><![CDATA[Alchemy]]></category>

		<guid isPermaLink="false">http://www.ppzhu.net/?p=267</guid>
		<description><![CDATA[还在为安装和配置Alchemy发愁吗？Alchemy Repack版本发布解除这个问题. Features - Auto installation of files, Shorcuts, and cie - Choice of installation destination - Generating user passwd and group files - Generating user profile bashrc - Auto setup of Alchemy paths - Auto config Alchemy and link &#8230;<p class="read-more"><a href="http://www.ppzhu.net/2011/03/04/alchemy-%e5%86%8d%e5%8f%91%e8%a1%8c%e7%89%88%e5%8f%91%e5%b8%83win32/">继续阅读 &#187;</a></p>]]></description>
		<wfw:commentRss>http://www.ppzhu.net/2011/03/04/alchemy-%e5%86%8d%e5%8f%91%e8%a1%8c%e7%89%88%e5%8f%91%e5%b8%83win32/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>多款as3游戏框架</title>
		<link>http://www.ppzhu.net/2010/11/29/%e5%a4%9a%e6%ac%beas3%e6%b8%b8%e6%88%8f%e6%a1%86%e6%9e%b6/</link>
		<comments>http://www.ppzhu.net/2010/11/29/%e5%a4%9a%e6%ac%beas3%e6%b8%b8%e6%88%8f%e6%a1%86%e6%9e%b6/#comments</comments>
		<pubDate>Mon, 29 Nov 2010 03:03:04 +0000</pubDate>
		<dc:creator>ppzhu</dc:creator>
				<category><![CDATA[work]]></category>
		<category><![CDATA[as3游戏框架]]></category>

		<guid isPermaLink="false">http://www.ppzhu.net/?p=258</guid>
		<description><![CDATA[转自蓝色理想论坛 转自 http://blog.sina.com.cn/s/blog_4a1606960100ixeu.html#post 有删改 这篇文章开始于对Adrian Parr博客中AS3 Code Libraries一文的翻译，虽然开源AS3 Library列表的文章不少，翻译这篇是因为感觉里面大多数东西都是比较著名的，我能用得到的，所以翻译整理一下以备日后不时之需。 对原有的列表进行了部分删减。 对于library的评注和截图将不断添加。 3D引擎 注：对于3D引擎，渲染的效率和支持的渲染功能是很重要的，然而在短短的文章中根本不可能做详细的介绍，特别是截图，很可能具有误导性，要了解更多应用案例以及技术演示的图片，请点击各个引擎的链接到网站上观看，本分类下所放置的图片只是举例该引擎的某一个应用，具有极大随意性，不代表该引擎最好的应用案例。 * Papervision3D http://blog.papervision3d.org/ 不敢说这个是目前最好的AS3三维引擎，但是绝对是最活跃的三维引擎，从互联网上的教程数量，维护团队的活跃程度，用户的规模都可以看出。我使用的就是这个三维引擎，一些案例可以看博客的PV3D分类。 * Away 3D http://www.away3d.com/ PV3D最大的竞争对手，名气也很大，功能非常丰富，感觉有的时候功能比PV3D要更新的快，不过在我还关注3D引擎比较的时候，Away3D的运行效率（CPU，内存占用率，FPS等）一直不如PV3D，所以最终没有选择它。活跃程度上没有PV3D高，在国内也是如此。 * Sandy 3D http://www.flashsandy.org/ 名气较前两者稍逊，对它的了解不多。 * Alternativa Platform http://blog.alternativaplatform.com/en/ 俄国人开发的引擎，不是开源的，但是效果很强（至少从目前网络上流传的演示来看是如此的），刚一推出便引起业界震动，但是不开源的话恐怕普及度要差很多。 * FIVe3D http://five3d.mathieu-badimon.com/ 与上述引擎不同，FIVe33D是的理念是“矢量3D引擎”，看看它的案例就知道，里面的三维图像都是矢量绘制的，别具一格。用的好的话可以做出与众不同的效果，FIVe3D的官方站点就是很好的案例，非常具有设计感，应该算是另辟蹊径的一款三维引擎。 * WireEngine3D (we3d) http://osflash.org/we3d/ 轻量级的高速Flash &#8230;<p class="read-more"><a href="http://www.ppzhu.net/2010/11/29/%e5%a4%9a%e6%ac%beas3%e6%b8%b8%e6%88%8f%e6%a1%86%e6%9e%b6/">继续阅读 &#187;</a></p>]]></description>
		<wfw:commentRss>http://www.ppzhu.net/2010/11/29/%e5%a4%9a%e6%ac%beas3%e6%b8%b8%e6%88%8f%e6%a1%86%e6%9e%b6/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>flash与中文输入法冲突，div遮挡flash问题</title>
		<link>http://www.ppzhu.net/2010/11/04/flash%e4%b8%8e%e4%b8%ad%e6%96%87%e8%be%93%e5%85%a5%e6%b3%95%e5%86%b2%e7%aa%81%ef%bc%8cdiv%e9%81%ae%e6%8c%a1flash%e9%97%ae%e9%a2%98/</link>
		<comments>http://www.ppzhu.net/2010/11/04/flash%e4%b8%8e%e4%b8%ad%e6%96%87%e8%be%93%e5%85%a5%e6%b3%95%e5%86%b2%e7%aa%81%ef%bc%8cdiv%e9%81%ae%e6%8c%a1flash%e9%97%ae%e9%a2%98/#comments</comments>
		<pubDate>Thu, 04 Nov 2010 03:29:22 +0000</pubDate>
		<dc:creator>ppzhu</dc:creator>
				<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://www.ppzhu.net/?p=256</guid>
		<description><![CDATA[现象描述: 默认状态下swf被置于所有的html元素顶层（渲染级别的。类似在所有html元素的总父容器上一层），无法被任何html元素遮挡。 无论怎么设置flash容器和层的深度(z-index)也无济于事。 解决方案: 现有的解决方案是在插入flash的embed或object标签中加入“wmode”属性并设置为wmode=“transparent”或”opaque” 附womde参数详解: window 模式 默认情况下的显示模式，在这种模式下flash player有自己的窗口句柄，这就意味着flash影片是存在于Windows中的一个显示实例，并且是在浏览器核心显示窗口之上的，所以flash只是貌似显示在浏览器中，但这也是flash最快最有效率的渲染模式。由于他是独立于浏览器的HTML渲染表面，这就导致默认显示方式下flash总是会遮住位置与他重合的所有DHTML层。 但是大多数苹果电脑浏览器会允许DHTML层显示在flash之上，但当flash影片播放时会出现比较诡异的现象，比如DHTML层像被flash刮掉一块一样显示异常。 Opaque 模式 这是一种无窗口模式，在这种情况下flash player没有自己的窗口句柄，这就需要浏览器需要告诉flash player在浏览器的渲染表面绘制的时间和位置。这时flash影片就不会在高于浏览器HTML渲染表面而是与其他元素一样在同一个页面上,因此你就可以使用z-index值来控制DHTML元素是遮盖flash或者被遮盖。 Transparent 模式 透明模式，在这种模式下flash player会将stage的背景色alpha值将为0并且只会绘制stage上真实可见的对象，同样你也可以使用z-index来控制flash影片的深度值，但是与Opaque模式不同的是这样做会降低flash影片的回放效果，而且在9.0.115之前的flash player版本设置wmode=”opaque”或”transparent”会导致全屏模式失效。 ========================================================================================================= 现象描述： 在ff浏览器里，部分用户输入法无法使用。 解决方案： 现有的解决方案是在插入flash的embed或object标签中加入“wmode”属性并设置为wmode=“window” 当这两种情况碰到一起的时候，无解。只能看实际情况选其一解决。lf繁体版本的解决方法是，wmode=&#8221;window&#8221;，放弃遮挡，在需要 显示遮挡的场合。用js控制swf的显隐,注意：不能用style.display=&#8221;none&#8221; 而要用style.width=0来控制，前者会引起swf重加载，非常奇怪，具体情况未知，可能是swf自身机制问题。]]></description>
		<wfw:commentRss>http://www.ppzhu.net/2010/11/04/flash%e4%b8%8e%e4%b8%ad%e6%96%87%e8%be%93%e5%85%a5%e6%b3%95%e5%86%b2%e7%aa%81%ef%bc%8cdiv%e9%81%ae%e6%8c%a1flash%e9%97%ae%e9%a2%98/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Android第一个程序HelloWorld</title>
		<link>http://www.ppzhu.net/2010/09/12/android%e7%ac%ac%e4%b8%80%e4%b8%aa%e7%a8%8b%e5%ba%8fhelloworld/</link>
		<comments>http://www.ppzhu.net/2010/09/12/android%e7%ac%ac%e4%b8%80%e4%b8%aa%e7%a8%8b%e5%ba%8fhelloworld/#comments</comments>
		<pubDate>Sun, 12 Sep 2010 16:33:58 +0000</pubDate>
		<dc:creator>ppzhu</dc:creator>
				<category><![CDATA[work]]></category>
		<category><![CDATA[Android]]></category>

		<guid isPermaLink="false">http://www.ppzhu.net/?p=231</guid>
		<description><![CDATA[折腾了一晚上，终于装好Android开发软件，貌似sdk还有些没装好，但是还是跑起来了 测试了下 不过虚拟机在我笔记本上跑有点小卡，囧～ 环境配置和安装方法： http://blog.csdn.net/hgplan/archive/2010/08/17/5819503.aspx]]></description>
		<wfw:commentRss>http://www.ppzhu.net/2010/09/12/android%e7%ac%ac%e4%b8%80%e4%b8%aa%e7%a8%8b%e5%ba%8fhelloworld/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>对象池</title>
		<link>http://www.ppzhu.net/2010/09/03/%e5%af%b9%e8%b1%a1%e6%b1%a0/</link>
		<comments>http://www.ppzhu.net/2010/09/03/%e5%af%b9%e8%b1%a1%e6%b1%a0/#comments</comments>
		<pubDate>Fri, 03 Sep 2010 05:43:24 +0000</pubDate>
		<dc:creator>ppzhu</dc:creator>
				<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://www.ppzhu.net/?p=227</guid>
		<description><![CDATA[对象池的工作原理： 对象池的工作原理的核心有两点：使用和缓存，即对于那些被频繁使用的对象，在使用完后，不立即将它们释放，而是将它们缓存起来，以供后续的应用程序反复使用，从而减少创建对象和释放对象的次数，进而改善应用程序的性能。 优点：能快速取出对象节省了new对象所产生的cpu，时间的消耗。能很好的控制内存的占用，使用时从对象池取出，使用完毕放回。中间不涉及到对象销毁创建，所以内存占用是定量的。同时假如对象池提前 缺点：对象池同样消耗new同样对象所消耗的时间，对象池从创建到结束消耗定量的内存。对象池只适合大量的对象需要被反复创建使用销毁创建使用销毁的情况。非提前初始化式内存池，缓存as值类型的对象如：point反而产生更大的消耗。 要实现一个对象池，一般会涉及到以下的几个类： 目标对象（someobject）类 该类就是程序中频繁使用的对象。 对象池（objectpool)类 该类主要用于管理对象的借出和归还，并通知对象池完成相应的工作。它至少包含两个方法： 　 borrowobject()：用于从池中借出对象； 　 returnobject()：将对象归还到池中； package wingox.pool { import flash.utils.dictionary; /** * @version 20100315 * @author brightli */ public class objectpool { private static var _pool : dictionary = new dictionary(true); private &#8230;<p class="read-more"><a href="http://www.ppzhu.net/2010/09/03/%e5%af%b9%e8%b1%a1%e6%b1%a0/">继续阅读 &#187;</a></p>]]></description>
		<wfw:commentRss>http://www.ppzhu.net/2010/09/03/%e5%af%b9%e8%b1%a1%e6%b1%a0/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>AS3效率优化：使用Vector数据类型</title>
		<link>http://www.ppzhu.net/2010/08/06/as3%e6%95%88%e7%8e%87%e4%bc%98%e5%8c%96%ef%bc%9a%e4%bd%bf%e7%94%a8vector%e6%95%b0%e6%8d%ae%e7%b1%bb%e5%9e%8b/</link>
		<comments>http://www.ppzhu.net/2010/08/06/as3%e6%95%88%e7%8e%87%e4%bc%98%e5%8c%96%ef%bc%9a%e4%bd%bf%e7%94%a8vector%e6%95%b0%e6%8d%ae%e7%b1%bb%e5%9e%8b/#comments</comments>
		<pubDate>Fri, 06 Aug 2010 05:08:58 +0000</pubDate>
		<dc:creator>ppzhu</dc:creator>
				<category><![CDATA[work]]></category>
		<category><![CDATA[Vector]]></category>
		<category><![CDATA[性能]]></category>

		<guid isPermaLink="false">http://www.ppzhu.net/?p=218</guid>
		<description><![CDATA[自FlashPlayer10伴随着FlashCS4发布时，AS3中就多了一种新的数据类型：Vector 这里先给不大熟悉Vector的同学们做一下简介（节选并改编自官方文档）： Vector是一种特殊的数组 首先，Vector的定义和C语言中“数组”更为接近，即数组的每一个元素都有相同的数据类型。（这就意味着对Vector中元素的访问要经过类型检查） 其次，Vector是一种密集数组，即每一个索引中必须包含一个值。（可以是null） 最后，Vector可以随时指定为固定长度的数组。 由于这些特殊性，Vector便拥有以下几点优势： 性能：使用 Vector 实例时的组元素的访问和迭代速度比使用 Array 时的要快很多。 类型安全性：在严格模式下，编译器可以识别数据类型错误。（但当使用 push() 方法或 unshift() 方法向 Vector 添加值时，编译器不会检查参数的数据类型，而是在运行时检查） 可靠性：相对于 Array，运行时范围检查（或定长检查）极大地提高了可靠性。 今天我们主要关注的是使用Vector数据类型来优化程序效率。 对于追求效率的RIA应用，使用Vector来提升效率是一种简单却行之有效的办法， 然而很多开发者对Vector的了解不够深入，以致未能充分发挥Vector在速度的优势。 接下来我们便来剖析一下Vector的最佳使用方法。 注：下文中所有代码的运行环境：FlashPlayer 10.1 &#38; Mac OS X 10.6.4，所有耗时均经过多次统计平均并取整。一、Vector数组的长度应当固定 Vector类型在AVM中的实现使用的是定长数组，虽然在AS3中其fixed属性默认为false，但仍不建议对Vector数组进行能够更改长度的操作。 请看以下测试：? var a:Vector.=new Vector.(1000000); var b:Vector.=new Vector.(10000000); &#8230;<p class="read-more"><a href="http://www.ppzhu.net/2010/08/06/as3%e6%95%88%e7%8e%87%e4%bc%98%e5%8c%96%ef%bc%9a%e4%bd%bf%e7%94%a8vector%e6%95%b0%e6%8d%ae%e7%b1%bb%e5%9e%8b/">继续阅读 &#187;</a></p>]]></description>
		<wfw:commentRss>http://www.ppzhu.net/2010/08/06/as3%e6%95%88%e7%8e%87%e4%bc%98%e5%8c%96%ef%bc%9a%e4%bd%bf%e7%94%a8vector%e6%95%b0%e6%8d%ae%e7%b1%bb%e5%9e%8b/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>游戏中的碰撞检测</title>
		<link>http://www.ppzhu.net/2010/07/21/%e6%b8%b8%e6%88%8f%e4%b8%ad%e7%9a%84%e7%a2%b0%e6%92%9e%e6%a3%80%e6%b5%8b/</link>
		<comments>http://www.ppzhu.net/2010/07/21/%e6%b8%b8%e6%88%8f%e4%b8%ad%e7%9a%84%e7%a2%b0%e6%92%9e%e6%a3%80%e6%b5%8b/#comments</comments>
		<pubDate>Wed, 21 Jul 2010 04:25:21 +0000</pubDate>
		<dc:creator>ppzhu</dc:creator>
				<category><![CDATA[work]]></category>
		<category><![CDATA[碰撞检测]]></category>

		<guid isPermaLink="false">http://www.ppzhu.net/?p=207</guid>
		<description><![CDATA[游戏中的碰撞检测方式有很多，不同的算法之间主要是在精度和速度之间权衡。以下几种方式按照速度排序说明。以2D为例，3D不过是增加了一维罢了，算法理解上没太大区别。 一、地图格子划分检测 最简单的一种检测，就是把地图（或者称为场景，总之是指碰撞发生的范围）划成一个个格子，类似仙剑奇侠传这样。假设地图有800*600px，20*20个像素为一格。那么可以划为40*30个格子。地图中参与检测的对象都存储着自身所在的格子坐标，判断碰撞就显而易见了，例如可以认为两个物体在相邻格判为碰撞，或者两个物体在同一格。采用这种方式有个要求，就是地图中所有可能参与碰撞的物体都要是20*20像素左右大小或者是其整数倍，例如房子占了3*3个格子，诸如此类。如果不遵守这个规则，有的物体只占了格子的一半，那么在玩家眼里这种检测就显得非常的粗糙。这种检测就像是把地图的像素点放大几十倍一样，与逐像素检测相比，效率提高了几十倍甚至上百倍。这种方式可运用于对检测要求不严格的游戏，例如踩地雷的RPG、推箱子之类的智力游戏。 二、矩形检测 当地图中的物体不能严格按照某个块大小的整数倍来绘制时，那么就需要另想其他的方法。这种方法适用于地图中的物体近似为矩形或者虽然不是矩形，但是碰撞精度要求不高的情况下。每个物体记录一个能够将自己框住的最小矩形的左上角坐标和矩形长宽。碰撞退化为判断矩形与矩形之间是否重叠，而这仅需要4次比较即可得出，速度很快。但为了判断整个场景中的物体，必须取第一个物体，迭代其他所有物体进行判断，再取第二个物体，迭代除第一第二个物体外的所有物体进行判断，以此类推。总计要进行（n-1）！次矩形判断才能准确得出场景中所有的碰撞可能。 三、圆形检测 与上一种方法类似，区别在于用一个能够包含物体的最小圆代替了矩形。主要是考虑到游戏中的物体外形以平滑为主，例如人物角色。而判断两个圆是否碰撞的计算也很简单，就是判断两个圆心之间的距离是否小于两个圆的半径之和。虽然球形检测在某些情况下提高了精度，但却损失了速度，因为点距离的计算需要用到平方和开方。具体相比慢多少我就不太清楚了。另外，为了计算整个地图的所有碰撞可能，也要进行（n-1）！次比较。 四、像素检测 精确到像素级，已经不能比这更精确了，相对的，效率也是最低的。怎样判断两个物体是否碰撞呢？在过去png格式图片还不盛行的时候，游戏中用到的图片中的透明部分是指定用某种颜色来表示的，例如洋红色。就像电影中的绿幕蓝幕，通过处理把这些颜色的像素点当做透明点处理，而为了判断检测，需要准备一张原图像的黑白图，黑色区域表示透明，这张图片中的每个像素值为0或者1，判断检测的时候取两张图片的黑白图，进行与运算，结果为1（有白点重叠），则判为碰撞。但是现在有了PNG和XNA，逐像素检测就相对简单一些。首先仍然需要有一个矩形框包围物体，通过矩形检测得到重叠的矩形区域可以大大减少检测的像素点数量。然后在这个区域内，取两个图片的点逐行逐列迭代，如果遇到某个点两张图片均有颜色存在，即判为碰撞。同理，进行（n-1）！次比较后得到全地图的碰撞可能。 五、四叉树检测 准确的说这事在第三四五种方法的基础上的优化策略，或者说是第一种方法同后三种方法的组合应用。主要是针对那最后的（n-1）！次比较。方法是，像第一种方法一样将地图分为格子，格子的大小应该能够容纳10个左右的地图中最大物体，例如一个800*600的地图可能就划为9个区。同样的，每个物体要记录自己所在的区坐标以及矩形包围盒。如果该物体完全位于该区内，则只要将其与该区内的其他物体判断碰撞。如果该物体虽然位于某个区，但是小部分位于隔壁区，则额外的需要迭代隔壁区的物体，这点效率损失是可以容忍的，相比于迭代全地图的物体。 有个问题，我怎么知道哪些物体是跟该物体位于同一个区呢？那不是还是要迭代一遍所有物体？这时候就是题目发挥的地方的，之所以称为四叉树检测（当然，这名字是我自己取的），就是因为那些区块是以四叉树的方式链接的，即得到一个区块的对象，就可以直接得到其上下左右相邻的区块的对象，而物体可以是存储在所在区的一个列表中。这样就不用遍历所有物体也可以直接取出隔壁区的物体了。当地图很大的时候，四叉树的优势体现得很好。 六、3D中的碰撞检测 以上是我所掌握碰撞方法，可能还有更多吧。那么3D中的检测其实是2D的延伸，例如矩形检测变为立方体检测，圆形检测引申为球形检测，四叉树检测进化为八叉树检测。 当然了，凡是有例外。逐像素检测方法在3D中没有相对应的方法，因为3D中的物体的表示最小单元是三角型而非点。其实也可以说逐三角片检测是逐像素检测的3D版，但毕竟是平面碰撞的检测，需要一定的计算公式，而不是与或一下就OK的。这里就不赘述了。 总结 我的表达能力不是很OK，另外手打得也有些酸。 选择哪种方法，要根据你的游戏需要，例如推箱子游戏，显然只要格子碰撞检测就足够了。而一些以球作为主要物体的游戏例如射击游戏则可以考虑圆形碰撞。 同样的，在有些碰撞精度要求很高的游戏中，还要对这些方法进行一定的变化，例如格斗游戏，作为判断的单元不是整个人而是四肢、身体等部位，需要更多的包围盒来表示一个物体。 原文地址：http://darkey2s.blog.163.com/blog/static/739930262010115105333989/]]></description>
		<wfw:commentRss>http://www.ppzhu.net/2010/07/21/%e6%b8%b8%e6%88%8f%e4%b8%ad%e7%9a%84%e7%a2%b0%e6%92%9e%e6%a3%80%e6%b5%8b/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[转]一个AS3 socket解码设计的错误思路</title>
		<link>http://www.ppzhu.net/2010/07/17/%e8%bd%ac%e4%b8%80%e4%b8%aaas3-socket%e8%a7%a3%e7%a0%81%e8%ae%be%e8%ae%a1%e7%9a%84%e9%94%99%e8%af%af%e6%80%9d%e8%b7%af/</link>
		<comments>http://www.ppzhu.net/2010/07/17/%e8%bd%ac%e4%b8%80%e4%b8%aaas3-socket%e8%a7%a3%e7%a0%81%e8%ae%be%e8%ae%a1%e7%9a%84%e9%94%99%e8%af%af%e6%80%9d%e8%b7%af/#comments</comments>
		<pubDate>Sat, 17 Jul 2010 05:49:00 +0000</pubDate>
		<dc:creator>ppzhu</dc:creator>
				<category><![CDATA[work]]></category>
		<category><![CDATA[socket]]></category>

		<guid isPermaLink="false">http://www.ppzhu.net/?p=202</guid>
		<description><![CDATA[作者：闪刀浪子 http://www.iflashigame.com http://hi.baidu.com/mr_ziqiang 转载请保留以上信息。 调试游戏确实是一项磨人的工作。难怪很多业内人都喜欢说“好游戏是改出来的”。奇都（game.qdooo.com）基础平台目前还在测试，陆陆续续收到了很多朋友的反馈（想参与测试的朋友欢迎联系我索取激活码）。所以这段时间的主要工作是在做美化和优化，新的竞技系统也在紧锣密鼓的准备中。 这里主要想说一下socket解码在设计时忽略的一个问题。（感谢Lite3的反馈）。 对于客户端的Socket的数据基本读取方式一般来说可以分为三种： 1、按照数据流的结尾标记截取 2、按照包头记录的包长度截取 3、按照包长度截取并验证结尾标记。 第一种方式：如图，通常做发是每个包结尾发送一个\0标记，表示这个数据包发送完了。socket每次读取1个字节直到遇到结尾符，结束读取将数据包传递到逻辑层。这种方式在xmlSocket时就已经用了很多了。 第二种方式：如图包头用一个整型记录完整包的长度。每次都先读取一个包长度，然后按照包长度读取指定长度的数据作为一个完整数据包传递到到逻辑层。 第三种方式：如图。这种方式把以上两种方式做了结合，读取的时候无需一个一个字节读，直接读取指定长度。结尾符可以用来做校验判定，同时可以作为包长度字节的读取依据。(如果上一个包有问题可以丢弃之后，以结尾符为标记读取下一个包的包长度。） 介绍了一点基本原理，下面说一下这个设计缺陷。 问题： 通讯中我们使用的是第二种方式——包长读取。在通讯类中创建一个临时存储变量_dataArray，提供一个getData():*公用方法，供外部取出数据。每次读完一个完整包后压入_dataArray，同时触发&#8221;recievedData&#8221;事件。代码如下： private function socketDataHandler(event:ProgressEvent):void { //_readFlag:int;//0表示全部读完了，1表示长度读取完毕 2表示正在读取数据 while (bytesAvailable) { if (_readFlag == 0&#38;&#38;bytesAvailable&#62;=4) { _length = Number(readInt()); _readFlag=1 } if (_readFlag == 1 &#38;&#38; &#8230;<p class="read-more"><a href="http://www.ppzhu.net/2010/07/17/%e8%bd%ac%e4%b8%80%e4%b8%aaas3-socket%e8%a7%a3%e7%a0%81%e8%ae%be%e8%ae%a1%e7%9a%84%e9%94%99%e8%af%af%e6%80%9d%e8%b7%af/">继续阅读 &#187;</a></p>]]></description>
		<wfw:commentRss>http://www.ppzhu.net/2010/07/17/%e8%bd%ac%e4%b8%80%e4%b8%aaas3-socket%e8%a7%a3%e7%a0%81%e8%ae%be%e8%ae%a1%e7%9a%84%e9%94%99%e8%af%af%e6%80%9d%e8%b7%af/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adobe Flash Catalyst CS5全新交互式设计工具</title>
		<link>http://www.ppzhu.net/2010/07/14/adobe-flash-catalyst-cs5%e5%85%a8%e6%96%b0%e4%ba%a4%e4%ba%92%e5%bc%8f%e8%ae%be%e8%ae%a1%e5%b7%a5%e5%85%b7/</link>
		<comments>http://www.ppzhu.net/2010/07/14/adobe-flash-catalyst-cs5%e5%85%a8%e6%96%b0%e4%ba%a4%e4%ba%92%e5%bc%8f%e8%ae%be%e8%ae%a1%e5%b7%a5%e5%85%b7/#comments</comments>
		<pubDate>Wed, 14 Jul 2010 02:28:12 +0000</pubDate>
		<dc:creator>ppzhu</dc:creator>
				<category><![CDATA[work]]></category>
		<category><![CDATA[Flash Catalyst]]></category>

		<guid isPermaLink="false">http://www.ppzhu.net/?p=196</guid>
		<description><![CDATA[Adobe Flash Catalyst CS5 软件是一款触手可得的全新交互式设计工具。无需编写任何代码，即可将 Adobe Photoshop、Illustrator 和 Fireworks 图稿变换为具有表现力的交互式项目，并充分利用 Adobe Flash Platform 的范围和一致性。 2010年4月12日北京时间23时，Adobe Creative Suite 5设计套装软件正式发布。Adobe CS5总共有15个独立程序和相关技术，这些软件通过五种不同的组合构成了五个不同的组合版本，分别是大师典藏版、设计高级版、设计标准版、网络高级版、产品高级版。 Flash Catalyst之前的开发代号为Thermo。这是一个为FLEX设计师准备的软件，通过Catalyst，设计师与程序员可以更好的搭配之间的工作。 它可以让你通过简单的拖拽就可以完成界面设计，然后可以生成具体的Flex代码，就不需要程序员在Flex中单独布局样式，Catalyst可以跳跃启动任意Flex项目。 Adobe平台业务部门总经理David Wadhwani表示，Catalyst旨在为开发人员和设计人员建立起沟通的桥梁，程序开发人员可以导入设计师在Photoshop、IIIustrator和Fireworks中设计的用户界面，并将它们转化成UI组件而不改变它们原先的“皮肤”、外观和整体风格。设计师仍然用Adobe的各种产品来完成自己的大部分工作，但是能通过Catalyst来定义UI组件了，就像开发人员通过编程来完成这一工作一样。它给开发人员和设计人员提供了一种交流协作的平台，而不用通过电子邮件或是一起坐在电脑前探讨。 Adobe CS5 的 Flash Catalyst 则是为了挑战微软的 Expression Studio，这款新的软件将作为Flash的另一个选择，是专门为设计师和美工量身定做，用户无需编写代码即可创建具有表现力的界面和交互式内容，可将 Adobe Photoshop、Illustrator 和Fireworks 图稿变换为具有表现力的交互式项目，并充分利用 Adobe Flash Platform 的范围和一致性，可以说设计结果触手可得 &#8230;<p class="read-more"><a href="http://www.ppzhu.net/2010/07/14/adobe-flash-catalyst-cs5%e5%85%a8%e6%96%b0%e4%ba%a4%e4%ba%92%e5%bc%8f%e8%ae%be%e8%ae%a1%e5%b7%a5%e5%85%b7/">继续阅读 &#187;</a></p>]]></description>
		<wfw:commentRss>http://www.ppzhu.net/2010/07/14/adobe-flash-catalyst-cs5%e5%85%a8%e6%96%b0%e4%ba%a4%e4%ba%92%e5%bc%8f%e8%ae%be%e8%ae%a1%e5%b7%a5%e5%85%b7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

