<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_Geekmind</title><subtitle type="text">相忘于江湖</subtitle><id>http://feed.cnblogs.com/blog/u/12605/rss</id><updated>2011-11-18T03:22:11Z</updated><author><name>eygneph</name><uri>http://www.cnblogs.com/eygneph/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/eygneph/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/12605/rss"/><entry><id>http://www.cnblogs.com/eygneph/archive/2011/11/18/2253403.html</id><title type="text">GDC China 2011见闻与感悟</title><summary type="text">沉寂一年多之后又想起写博客，希望不是今年最后一次。今年的GDC China无疑又是一次团结的胜利的大会，但刨去IGF China颁奖的热闹，各种社交的晚宴聚会之外，感到留给自己的是冰冷的现实。走在初冬的上海街道，注视着昏黄的路灯灯光，我感到异常的孤独。首先是关于Project OneTap的。这是个有一点机制创新的游戏，在去GDC之前我对它还是有点信心的，但试玩后的结果被很多indie批评为太过商业，过分取悦媚俗文化，从而丧失了独立游戏的本质（例如Pixel May Cry，例如FTL都是很多人津津乐道的体现独立风格的游戏）。虽然我们花了近乎一年的时间来原型、打磨这个游戏，付出了很多辛勤的劳动</summary><published>2011-11-17T16:59:00Z</published><updated>2011-11-17T16:59:00Z</updated><author><name>eygneph</name><uri>http://www.cnblogs.com/eygneph/</uri></author><link rel="alternate" href="http://www.cnblogs.com/eygneph/archive/2011/11/18/2253403.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/eygneph/archive/2011/11/18/2253403.html"/><content type="html">&lt;p&gt;沉寂一年多之后又想起写博客，希望不是今年最后一次。&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;今年的GDC China无疑又是一次团结的胜利的大会，但刨去IGF China颁奖的热闹，各种社交的晚宴聚会之外，感到留给自己的是冰冷的现实。&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;走在初冬的上海街道，注视着昏黄的路灯灯光，我感到异常的孤独。&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;首先是关于Project OneTap的。这是个有一点机制创新的游戏，在去GDC之前我对它还是有点信心的，但试玩后的结果被很多indie批评为太过商业，过分取悦媚俗文化，从而丧失了独立游戏的本质（例如Pixel May Cry，例如FTL都是很多人津津乐道的体现独立风格的游戏）。虽然我们花了近乎一年的时间来原型、打磨这个游戏，付出了很多辛勤的劳动，但对这点我无法否认。而且就OneTap的现状来说，可能也只能这样了，把它按现在的路线做完。&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;接着，既然独立游戏应该有独立游戏的风格，那么做这样产品的团队怎么存活下来？ 面对这个问题，FTL团队坦言说他们在吃老本吃存款，完全不为销路担心。Canabalt的作者Adam Saltsman也认为独立游戏之所以独立，是因为把design放在business之前。以他的经验，他喜欢先设计游戏，甚至免费让大家都能玩到，再考虑如何赚钱。包括后来跟他聊到的Aquaria/Spelunky的作者Derek Yu也是走的这种，先private development一段时间，再上tigsource public development一段时间，收集反馈和征集有潜质的开发者，定期免费放出windows build，再进行xbla版的开发。至于经济问题，小团队中的个人总是可以靠着少量contract工作或者外包工作持续下去。我想，拥有这样游侠式牛仔式的开发的心境的人，才是能开发出独立精神游戏的。&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;最后就是陈星汉的演讲了。 由于演讲的内容大部分我都事先通过thatgamecompany的其他演讲了解过，没有太多让人惊讶的部分，但我还是想在这里强调一下。陈星汉关于游戏情感表达的多样性，或者说情感光谱的多样性表达，是我深深赞同的一点。游戏还是一个很年轻的行业，游戏还缺乏很多它能表达的情感，也缺乏能让大多数人接受的游玩方式、体验。通常游戏是以empower给你力量来进行power fantasy的模式吸引玩家进行游戏。而这正是很多游戏通过再多的机制创新也无法挣脱的桎梏。而陈的理念是，游戏将经历类似电影早期发展的模式，经历以新技术为卖点，感官刺激为卖点的时代，发展为一个为绝大多数人接受的媒体。我无法反驳这一点，这种潮流在我看来，就像90年代卡马克的3D引擎对游戏业产生的冲击一样，将会主导21世纪第二个十年内的游戏。而且对于social network，陈也觉得目前的互动过于粗陋，没有将人与人之间的社交活动发展出应有的模样，这点也与我们一直在考虑的问题相近，只是我们无法形成他那样理论。不过就如何用游戏表达情感，并让更多的大众能接受这种游戏，陈没有给出答案，而我觉得这才是他们公司真正的核心所在。所以知道方向，但迷惑于如何达成目标，也是感到孤独苦闷的原因之一。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/eygneph/aggbug/2253403.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/eygneph/archive/2011/11/18/2253403.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/eygneph/archive/2010/06/24/1764090.html</id><title type="text">iOS 4 X iPhone 4 == INF</title><summary type="text">我从来都是个很凹凸的人。这不今天才看完WWDC 2010上乔布斯的keynote演讲。不得不佩服乔布斯那传说中的&amp;#8220;现实扭曲场&amp;#8221;，他把2小时的节奏把握得恰到好处，先是惯用的大量数字冲击、笼络开发者，随后iPhone 4的八个feature中处处埋藏着惊喜和启发式的demo，这种感觉自06年E3上Reggie的那场精彩Wii demo之后似乎就不曾有过了。Game Center...</summary><published>2010-06-23T18:17:00Z</published><updated>2010-06-23T18:17:00Z</updated><author><name>eygneph</name><uri>http://www.cnblogs.com/eygneph/</uri></author><link rel="alternate" href="http://www.cnblogs.com/eygneph/archive/2010/06/24/1764090.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/eygneph/archive/2010/06/24/1764090.html"/><content type="html">&lt;p&gt;我从来都是个很凹凸的人。这不今天才看完WWDC 2010上乔布斯的keynote演讲。不得不佩服乔布斯那传说中的&amp;#8220;&lt;a href="http://en.wikipedia.org/wiki/Reality_distortion_field" target="_blank"&gt;&lt;font color="#000000"&gt;现实扭曲场&lt;/font&gt;&lt;/a&gt;&amp;#8221;，他把2小时的节奏把握得恰到好处，先是惯用的大量数字冲击、笼络开发者，随后iPhone 4的八个feature中处处埋藏着惊喜和启发式的demo，这种感觉自06年E3上Reggie的那场精彩Wii demo之后似乎就不曾有过了。&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Game Center虽然不在昨天发布的iOS 4.0之中，但苹果的这一步无疑将iOS平台硬件真正变成了专业的游戏平台。我稍微看了一下2个关于Game Center的讲座，基本上它把match making，friends+invitation，in-game voice chat，p2p networking（API功能基本等同于DirectPlay/XNA）全都做了，所以Game Center = XNA + XDK Extension。&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;抛开Game Center，就以乔布斯演示的iOS 4 + iPhone 4的特性来说，我猜测今后的AppStore上会出现以下几种新应用：&lt;/p&gt;&lt;p&gt;1、大量更新颖的，基于Augmented Reality（AR）技术的应用。&lt;/p&gt;&lt;p&gt;由于引入了陀螺仪，iPhone 4称为一个真正的6轴系统，对于动作感知方面不可同日而语（非常简单并准确地orient the device, orient the virtual object）。加上高清的摄像API以及前后2个摄像头，麦克风，基于AR的应用可大大超越目前GPS+Compass+Google Map的套路。&lt;/p&gt;&lt;p&gt;2、全景照片。&lt;/p&gt;&lt;p&gt;由于有陀螺仪侦测旋转速度，完全可以做到目前DC（如SONY TX-7）的全景照片功能，无需像AutoStitch那样后处理拼接、变形。&lt;/p&gt;&lt;p&gt;3、基于全景照片或有地理信息的照片，开发用户创建内容游戏。&lt;/p&gt;&lt;p&gt;可以算作全景照片的分支。一张全景照片可以作为一个世界，在此基础上可以组合多种用户生成的内容。通过GPS设备，照片可以带有地理信息，加上6轴的朝向和镜头FOV，能辅助多张照片创建同一场景的point cloud（类似Photosynth，但有了地理和朝向信息应该更方便），也不失为一种用户创建内容。&lt;/p&gt;&lt;p&gt;4、基于摄像头游戏。&lt;/p&gt;&lt;p&gt;前置摄像头使侦测玩家动作成为可能，将会涌现一大堆类似EyeToy的游戏。还有些游戏不一定通过玩家&amp;#8220;显式&amp;#8221;的动作来进行，而可以侦测一些如头部摇晃，配合动作感应功能，相信会有很多可能性。再有，利用API转换前置或后置摄像头获取的图像/视频，说不定也可以增加或加强一些游戏的玩法。&lt;/p&gt;&lt;p&gt;5、眼睛控制的游戏。&lt;/p&gt;&lt;p&gt;这其实也是前面一个大类的细化，不过如果真的能做好，也不失为一种新奇的玩法。通过前置摄像头获取的影像信息，跟踪玩家的眼球，通过眼球的朝向移动信息，起到游戏内的控制功能。&amp;nbsp;&lt;/p&gt;&lt;p&gt;6、照明应用。&lt;/p&gt;&lt;p&gt;LED闪光灯如果可以API控制，将会出现更多的照明应用。&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;暂时就想到这些。&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/eygneph/aggbug/1764090.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/eygneph/archive/2010/06/24/1764090.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/eygneph/archive/2010/06/14/1758357.html</id><title type="text">不拷贝</title><summary type="text">拷贝或山寨在国内游戏界已经成为一种事实行业标准，投资人会告诉他的团队，我们要抄A游戏，因为他在X公司的财报中占据产品利润榜首。因为有了拷贝，投资人才有信心说他的产品也能红起来&amp;#8212;&amp;#8212;因为他和行业老大拥有同样的feature。看上去这种做法没有问题，产品做到了和最大竞争对手一样（甚至超越）的功能，自然底气就足了。问题在于，拷贝这种行为忽略了一种理解的过程&amp;#8212;&amp;#8212...</summary><published>2010-06-14T12:12:00Z</published><updated>2010-06-14T12:12:00Z</updated><author><name>eygneph</name><uri>http://www.cnblogs.com/eygneph/</uri></author><link rel="alternate" href="http://www.cnblogs.com/eygneph/archive/2010/06/14/1758357.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/eygneph/archive/2010/06/14/1758357.html"/><content type="html">&lt;p&gt;拷贝或山寨在国内游戏界已经成为一种事实行业标准，投资人会告诉他的团队，我们要抄A游戏，因为他在X公司的财报中占据产品利润榜首。因为有了拷贝，投资人才有信心说他的产品也能红起来&amp;#8212;&amp;#8212;因为他和行业老大拥有同样的feature。看上去这种做法没有问题，产品做到了和最大竞争对手一样（甚至超越）的功能，自然底气就足了。&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;问题在于，拷贝这种行为忽略了一种理解的过程&amp;#8212;&amp;#8212;理解你和你的产品如何成长的过程。创造一个好产品，你必须理解这东西为什么是这样，而为什么不是那样。如果你只是把那层皮拷贝下来，你只是做到了把表面最光鲜的那一层东西剥离下来贴在自己脸上，但底下这个产品是如何成长起来的，你完全没有概念。原创的作者在&amp;#8220;台下十年功&amp;#8221;，换到你看到的&amp;#8220;台上十分钟&amp;#8221;，而很多人却只知道把那十分钟拷贝下来，须知那十年功夫不是白给的。另外一个问题是被动。如果你拷贝别人，你的大量注意力会放在你的那个被你拷贝的企业，你永远是个跟随者而很难一跃成为领导者&amp;#8212;&amp;#8212;因为你现在搞出来的那玩意儿，已经是别人玩剩下的，在别人制定的游戏规则下，你还能有多少生命力呢？&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;再看许多国内的游戏外包公司，一直喊着要转型转型转型，做原创原创原创，但真正出来产品的有几个呢（更不用说好的产品了）？他们不明白游戏的迭代迭代再迭代的雕琢过程，而一心只是快点做完一个单子再接另一个单子。所以这种只从事单一的生产外包企业，很难出现具创造性的自主产品。好比是富士康的工厂，再如何优化资源或善待员工，也无法成为像Apple或者Google那样伟大的企业。&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;以上部分思想来自于37signals的Rework一书。详见：&lt;a href="http://37signals.com/rework/" target="_blank"&gt;http://37signals.com/rework/&lt;/a&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/eygneph/aggbug/1758357.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/eygneph/archive/2010/06/14/1758357.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/eygneph/archive/2010/05/15/1735896.html</id><title type="text">&amp;quot;...为他们的产品痴迷，不是有兴趣，不是了解，而是痴迷&amp;quot;</title><summary type="text">&amp;#8220;伟大的创业者的共同特点就是他们为他们的产品痴迷，不是有兴趣，不是了解，而是痴迷。&amp;#8221;http://www.businessinsider.com/brad-feld-my-obsession-with-the-product-2010-5 摘自李开复的微博，共勉之。</summary><published>2010-05-14T19:26:00Z</published><updated>2010-05-14T19:26:00Z</updated><author><name>eygneph</name><uri>http://www.cnblogs.com/eygneph/</uri></author><link rel="alternate" href="http://www.cnblogs.com/eygneph/archive/2010/05/15/1735896.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/eygneph/archive/2010/05/15/1735896.html"/><content type="html">&lt;p&gt;&amp;#8220;伟大的创业者的共同特点就是他们为他们的产品痴迷，不是有兴趣，不是了解，而是痴迷。&amp;#8221;&amp;nbsp;&lt;a href="http://www.businessinsider.com/brad-feld-my-obsession-with-the-product-2010-5" target="_blank"&gt;http://www.businessinsider.com/brad-feld-my-obsession-with-the-product-2010-5 &lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;摘自李开复的微博，共勉之。&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.businessinsider.com/brad-feld-my-obsession-with-the-product-2010-5" target="_blank"&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/eygneph/aggbug/1735896.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/eygneph/archive/2010/05/15/1735896.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/eygneph/archive/2010/05/15/1735895.html</id><title type="text">分享：Castle Crasher制作人Tom Fulp的一篇开发日记</title><summary type="text">原文地址：http://tomfulp.newgrounds.com/news/post/78053我在Castle Crasher上花的时间越长，我睡觉的时间越短。它开始将我的作息时间从早8点－晚8点调整到早8点－晚12点&amp;#8943;&amp;#8943;整个周日工作之后，我回到家收到一堆的PM，但我还不能睡，因为留下这么多工作没做完就睡觉让我觉得有罪恶感，于是我又回到了办公室并且一直工作到周一晚上。...</summary><published>2010-05-14T19:20:00Z</published><updated>2010-05-14T19:20:00Z</updated><author><name>eygneph</name><uri>http://www.cnblogs.com/eygneph/</uri></author><link rel="alternate" href="http://www.cnblogs.com/eygneph/archive/2010/05/15/1735895.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/eygneph/archive/2010/05/15/1735895.html"/><content type="html">&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'STHeiti Light'"&gt;原文地址：&lt;a href="http://tomfulp.newgrounds.com/news/post/78053" target="_blank"&gt;http://tomfulp.newgrounds.com/news/post/78053&amp;nbsp;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br style="font-size: 10pt; " /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt; "&gt;我在Castle Crasher上花的时间越长，我睡觉的时间越短。它开始将我的作息时间从早8点－晚8点调整到早8点－晚12点&amp;#8943;&amp;#8943;整个周日工作之后，我回到家收到一堆的PM，但我还不能睡，因为留下这么多工作没做完就睡觉让我觉得有罪恶感，于是我又回到了办公室并且一直工作到周一晚上。今天的作息时间是早7点－早1：30。总是这样，我最终回到了家，趴在床上&amp;#8943;&amp;#8943;努力地放松自己的头脑&amp;#8943;&amp;#8943;感觉马上要睡着了，但很快又睡不着。于是爬起来，要么回办公室，要么坐在家里拿着笔记本，把一些想法记录下来留给明天做。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt; "&gt;而制作Castle Crasher这件事本身就像让自己睡觉。某一刻你觉得差不多做完了，但那时你的大脑开始飞速思考，各种想法开始喷涌而出，你压根无法控制，突然你发现其实目前的进度离理想状态还有十万八千里。不过我必须这样做，因为这是让游戏变得好玩的唯一途径。有人称这种现象为scope creep（译注：即在开发过程中对于目标的经常性更改，这是种糟糕的情况），但我们现在确实有一个清晰的项目定义，我们只需跟着这个定义走，但同时不丢弃任何我们日后可能为之后悔的要素。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt; "&gt;制作游戏机平台的Alien Hominid的经历让我觉得，这辈子只会做一次这种项目，不仅机会只有一次，而且对于我的心智承受能力来说，也只能做一次。但看看现在，15个月后，我们告诉自己，下一个游戏将会是一个更简单的游戏&amp;#8212;&amp;#8212;但那只是讲讲而已。下一个游戏总是更大更强，要不然你就退步了。Castle Crasher自然是个更强大的游戏。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'STHeiti Light'; min-height: 12.0px"&gt;&lt;br /&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'STHeiti Light'"&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'STHeiti Light'; min-height: 12.0px"&gt;&lt;span style="font-size: 10pt; "&gt;译后记：凌晨3：20感觉睡下去也不会很快睡着，于是有了这篇翻译。很多人看到Castle Crasher在XBLA上的风光，但很少人去想了解behemoth作为一个独立开发者背后的艰辛。这篇日记让我想起在以前公司里和千里马肝一起工作的日子。而我在不久的将来也会走上类似的道路。如果你也是这样对开发游戏而痴迷的人，请与我联系。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'STHeiti Light'"&gt;&lt;/p&gt;&lt;div&gt;&lt;font face="'STHeiti Light', 'courier new'" size="3"&gt;&lt;span style="font-size: 12px; line-height: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/eygneph/aggbug/1735895.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/eygneph/archive/2010/05/15/1735895.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/eygneph/archive/2010/05/04/1726879.html</id><title type="text">中国创业者面临的5个问题</title><summary type="text">李开复在VentureBeat采访中提到中国创业者的5个问题，其中至少3个和中国文化有关。Education gap，中国的教育不鼓励创业；Parents trap，父母保守观念的阻碍；Failure is not an option，中国文化对失败的零容忍态度。基于上述3个观点，it starts with people，找对人就是第4个要点。有链接有真相：http://venturebeat....</summary><published>2010-05-03T16:35:00Z</published><updated>2010-05-03T16:35:00Z</updated><author><name>eygneph</name><uri>http://www.cnblogs.com/eygneph/</uri></author><link rel="alternate" href="http://www.cnblogs.com/eygneph/archive/2010/05/04/1726879.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/eygneph/archive/2010/05/04/1726879.html"/><content type="html">&lt;p&gt;李开复在VentureBeat采访中提到中国创业者的5个问题，其中至少3个和中国文化有关。Education gap，中国的教育不鼓励创业；Parents trap，父母保守观念的阻碍；Failure is not an option，中国文化对失败的零容忍态度。基于上述3个观点，it starts with people，找对人就是第4个要点。&lt;/p&gt;&lt;p&gt;有链接有真相：&lt;a href="http://venturebeat.com/2010/04/27/5-insights-about-chinese-startups-from-former-google-china-president-kai-fu-lee/" target="_blank"&gt;http://venturebeat.com/2010/04/27/5-insights-about-chinese-startups-from-former-google-china-president-kai-fu-lee/&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/eygneph/aggbug/1726879.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/eygneph/archive/2010/05/04/1726879.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/eygneph/archive/2010/05/04/1726871.html</id><title type="text">对cocos2d iphone的朝向处理的改进</title><summary type="text">我用cocos2d iphone作为我的iPhone/iPad游戏已经有一阵子了。cocos2d iphone是个经过考验的、方便使用的引擎，而且让你几乎可以很快地进行gameplay方面的开发。最近它加入了iPad的支持。然而，Apple对于iPad游戏的审批似乎比iPhone更严格了一些。因为iPad Human Interface Guideline中对于朝向敏感方面，对开发者做出了更高的要...</summary><published>2010-05-03T16:27:00Z</published><updated>2010-05-03T16:27:00Z</updated><author><name>eygneph</name><uri>http://www.cnblogs.com/eygneph/</uri></author><link rel="alternate" href="http://www.cnblogs.com/eygneph/archive/2010/05/04/1726871.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/eygneph/archive/2010/05/04/1726871.html"/><content type="html">&lt;p&gt;我用cocos2d iphone作为我的iPhone/iPad游戏已经有一阵子了。cocos2d iphone是个经过考验的、方便使用的引擎，而且让你几乎可以很快地进行gameplay方面的开发。最近&lt;a href="http://www.cocos2d-iphone.org/archives/511" target="_blank"&gt;它加入了iPad的支持&lt;/a&gt;。然而，Apple对于iPad游戏的审批似乎比iPhone更严格了一些。因为iPad Human Interface Guideline中&lt;a href="http://www.cocos2d-iphone.org/forum/topic/5697" target="_blank"&gt;对于朝向敏感方面，对开发者做出了更高的要求。&lt;/a&gt;&lt;/p&gt;&lt;p&gt;鉴于以上原因，我准备让我的游戏变得对朝向改变更友好一点。在cocos2d iphone中，朝向的改变可以用注册UIDeviceOrientationDidChangeNotification事件后，再调用一些CCDirector的方法予以解决：&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;" onclick="cnblogs_code_show('c6032605-3565-4cb6-bb06-fe4a86bc443a')"&gt;&lt;img src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif"  id="code_img_opened_ba33a86d-4cdb-4844-a4be-b54394ae4583" onclick="cnblogs_code_hide('ba33a86d-4cdb-4844-a4be-b54394ae4583',event)" style="display:none"&gt;&lt;div id="cnblogs_code_open_ba33a86d-4cdb-4844-a4be-b54394ae4583" &gt;&lt;div&gt;&lt;!--&lt;br/ /&gt;&lt;br/ /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;http://www.CodeHighlighter.com/&lt;br/ /&gt;&lt;br/ /&gt;--&gt;&lt;span style="color: #000000;"&gt;CGAffineTransform&amp;nbsp;CGAffineTransformInterpolate(&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;const&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;CGAffineTransform&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;t0,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;const&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;CGAffineTransform&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;t1,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;float&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;factor)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;clamp&amp;nbsp;factor&amp;nbsp;to&amp;nbsp;[0,&amp;nbsp;1]&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;(&amp;nbsp;factor&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;factor&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;(&amp;nbsp;factor&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;factor&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;CGAffineTransformMake(t0&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;a&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;factor)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;t1&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;a&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;factor,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;t0&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;b&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;factor)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;t1&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;b&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;factor,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;t0&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;c&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;factor)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;t1&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;c&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;factor,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;t0&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;d&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;factor)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;t1&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;d&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;factor,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;t0&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;tx&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;factor)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;t1&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;tx&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;factor,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;t0&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;ty&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;factor)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;t1&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;ty&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;factor);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;in&amp;nbsp;your&amp;nbsp;CCDirector.m:&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;(&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&amp;nbsp;setDeviceOrientation:(ccDeviceOrientation)&amp;nbsp;orientation&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&amp;nbsp;deviceOrientation_&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;!=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;orientation&amp;nbsp;)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;deviceOrientation_&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;orientation;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;targetTransform_&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;CGAffineTransformIdentity;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;elapsedSinceLastOrientationChange_&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CGSize&amp;nbsp;s&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;[openGLView_&amp;nbsp;frame].size;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;float&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;w&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;s.width&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;2&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;float&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;h&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;s.height&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;2&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;switch&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&amp;nbsp;deviceOrientation_)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;case&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;CCDeviceOrientationPortrait:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[[UIApplication&amp;nbsp;sharedApplication]&amp;nbsp;setStatusBarOrientation:&amp;nbsp;UIInterfaceOrientationPortrait&amp;nbsp;animated:NO];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;break&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;case&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;CCDeviceOrientationPortraitUpsideDown:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[[UIApplication&amp;nbsp;sharedApplication]&amp;nbsp;setStatusBarOrientation:&amp;nbsp;UIInterfaceOrientationPortraitUpsideDown&amp;nbsp;animated:NO];&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;targetTransform_&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;CGAffineTransformTranslate(targetTransform_,&amp;nbsp;w,&amp;nbsp;h);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;targetTransform_&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;CGAffineTransformRotate(targetTransform_,&amp;nbsp;CC_DEGREES_TO_RADIANS(&lt;/span&gt;&lt;span style="color: #800080;"&gt;180&lt;/span&gt;&lt;span style="color: #000000;"&gt;));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;targetTransform_&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;CGAffineTransformTranslate(targetTransform_,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;w,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;h);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;break&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;case&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;CCDeviceOrientationLandscapeLeft:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[[UIApplication&amp;nbsp;sharedApplication]&amp;nbsp;setStatusBarOrientation:&amp;nbsp;UIInterfaceOrientationLandscapeRight&amp;nbsp;animated:NO];&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;targetTransform_&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;CGAffineTransformTranslate(targetTransform_,&amp;nbsp;w,&amp;nbsp;h);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;targetTransform_&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;CGAffineTransformRotate(targetTransform_,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;CC_DEGREES_TO_RADIANS(&lt;/span&gt;&lt;span style="color: #800080;"&gt;90&lt;/span&gt;&lt;span style="color: #000000;"&gt;));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;targetTransform_&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;CGAffineTransformTranslate(targetTransform_,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;h,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;w);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;break&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;case&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;CCDeviceOrientationLandscapeRight:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[[UIApplication&amp;nbsp;sharedApplication]&amp;nbsp;setStatusBarOrientation:&amp;nbsp;UIInterfaceOrientationLandscapeLeft&amp;nbsp;animated:NO];&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;targetTransform_&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;CGAffineTransformTranslate(targetTransform_,&amp;nbsp;w,&amp;nbsp;h);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;targetTransform_&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;CGAffineTransformRotate(targetTransform_,&amp;nbsp;CC_DEGREES_TO_RADIANS(&lt;/span&gt;&lt;span style="color: #800080;"&gt;90&lt;/span&gt;&lt;span style="color: #000000;"&gt;));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;targetTransform_&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;CGAffineTransformTranslate(targetTransform_,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;h,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;w);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;break&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;default&lt;/span&gt;&lt;span style="color: #000000;"&gt;:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NSLog(&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Director:&amp;nbsp;Unknown&amp;nbsp;device&amp;nbsp;orientation&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;break&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&amp;nbsp;applyLandscape&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;float&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;m[&lt;/span&gt;&lt;span style="color: #800080;"&gt;16&lt;/span&gt;&lt;span style="color: #000000;"&gt;];&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;(&amp;nbsp;elapsedSinceLastOrientationChange_&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;0.25f&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;currentTransform_&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;CGAffineTransformInterpolate(&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;amp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;currentTransform_,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;amp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;targetTransform_,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;elapsedSinceLastOrientationChange_&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;0.25f&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;elapsedSinceLastOrientationChange_&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;+=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;dt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;else&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;currentTransform_&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;targetTransform_;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CGAffineToGL(&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;amp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;currentTransform_,&amp;nbsp;m);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;glMultMatrixf(m);&lt;br /&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;现在，cocos2d的朝向处理就可以有漂亮的切换动画了。&lt;a href="http://dl.dropbox.com/u/4634813/change_orientation_enhancement.diff" target="_blank"&gt;我把patch文件上传了&lt;/a&gt;，如果有兴趣的话可以下载看看。我是基于cocos2d iphone 0.99.0的代码做的。&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/eygneph/aggbug/1726871.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/eygneph/archive/2010/05/04/1726871.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/eygneph/archive/2010/04/04/1703989.html</id><title type="text">写在30岁之前</title><summary type="text">活到现在，总结2条：1、形成自我（包括原则、性格、是非标准、个人好恶等等）。2、根据形成的自我，要活在自己的生命里（而不是活在别人的生命里）。时间紧迫，生命有限，自强不息。</summary><published>2010-04-03T16:14:00Z</published><updated>2010-04-03T16:14:00Z</updated><author><name>eygneph</name><uri>http://www.cnblogs.com/eygneph/</uri></author><link rel="alternate" href="http://www.cnblogs.com/eygneph/archive/2010/04/04/1703989.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/eygneph/archive/2010/04/04/1703989.html"/><content type="html">&lt;p&gt;活到现在，总结2条：&lt;/p&gt;&lt;p&gt;1、形成自我（包括原则、性格、是非标准、个人好恶等等）。&lt;/p&gt;&lt;p&gt;2、根据形成的自我，要活在自己的生命里（而不是活在别人的生命里）。&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;时间紧迫，生命有限，自强不息。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/eygneph/aggbug/1703989.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/eygneph/archive/2010/04/04/1703989.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/eygneph/archive/2009/10/20/1586862.html</id><title type="text">文化部vs新闻出版署 Round 2</title><summary type="text">换人了换人了～其一：http://games.solidot.org/article.pl?sid=09/10/10/0958242&amp;amp;from=rss在文化部发布公文称&amp;#8220;网络游戏不是出版物，文化部是网络游戏的主管部门&amp;#8221;之后，新闻出版总署发出通知《关于贯彻落实国务院〈&amp;#8220;三定&amp;#8221;规定〉和中央编办有关解释，进一步加强网络游戏前置审批和进口网络游戏审批...</summary><published>2009-10-20T04:50:00Z</published><updated>2009-10-20T04:50:00Z</updated><author><name>eygneph</name><uri>http://www.cnblogs.com/eygneph/</uri></author><link rel="alternate" href="http://www.cnblogs.com/eygneph/archive/2009/10/20/1586862.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/eygneph/archive/2009/10/20/1586862.html"/></entry><entry><id>http://www.cnblogs.com/eygneph/archive/2009/10/19/1586057.html</id><title type="text">关于勇气</title><summary type="text">Your time is limited, so don't waste it living someone else's life. Don't be trapped by dogma &amp;#8212; which is living with the results of other people's thinking. Don't let the noise of others' opinio...</summary><published>2009-10-19T08:32:00Z</published><updated>2009-10-19T08:32:00Z</updated><author><name>eygneph</name><uri>http://www.cnblogs.com/eygneph/</uri></author><link rel="alternate" href="http://www.cnblogs.com/eygneph/archive/2009/10/19/1586057.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/eygneph/archive/2009/10/19/1586057.html"/></entry></feed>
