??xml version="1.0" encoding="utf-8" standalone="yes"?>777午夜精品久久av蜜臀,久久99精品久久久久久不卡,久久精品国产福利国产秒http://cppblog.com/sixleaves/category/20816.html重剑无锋 大y不工zh-cnTue, 07 Apr 2015 13:03:49 GMTTue, 07 Apr 2015 13:03:49 GMT60cocos2dx之坐标系详解http://www.shnenglu.com/sixleaves/archive/2015/04/06/210254.htmlswpswpSun, 05 Apr 2015 17:53:00 GMThttp://www.shnenglu.com/sixleaves/archive/2015/04/06/210254.htmlhttp://www.shnenglu.com/sixleaves/comments/210254.htmlhttp://www.shnenglu.com/sixleaves/archive/2015/04/06/210254.html#Feedback0http://www.shnenglu.com/sixleaves/comments/commentRss/210254.htmlhttp://www.shnenglu.com/sixleaves/services/trackbacks/210254.html阅读全文

swp 2015-04-06 01:53 发表评论
]]>
cocos2dx之调度器(Scheduler)http://www.shnenglu.com/sixleaves/archive/2015/04/06/210253.htmlswpswpSun, 05 Apr 2015 16:57:00 GMThttp://www.shnenglu.com/sixleaves/archive/2015/04/06/210253.htmlhttp://www.shnenglu.com/sixleaves/comments/210253.htmlhttp://www.shnenglu.com/sixleaves/archive/2015/04/06/210253.html#Feedback0http://www.shnenglu.com/sixleaves/comments/commentRss/210253.htmlhttp://www.shnenglu.com/sixleaves/services/trackbacks/210253.html
cocos2dx调度器的cd路上所C,调度器承自Refc,该类实现?jin)内存的自动理机制?br />我们先看一下官Ҏ(gu)的介绍Q一下是引用官方文档Q到-----Uؓ(f)止?br />

原理介绍

Cocos2d-x调度器ؓ(f)游戏提供定时事g和定时调用服务。所有Node对象都知道如何调度和取消调度事gQ用调度器有几个好处:(x)

  1. 每当Node不再可见或已从场景中U除Ӟ调度器会(x)停止?/li>
  2. Cocos2d-x暂停Ӟ调度器也?x)停止。当Cocos2d-x重新开始时Q调度器也会(x)自动l箋启动?/li>
  3. Cocos2d-x装?jin)一个供各种不同q_使用的调度器Q用此调度器你不用兛_(j)和跟t你所讑֮的定时对象的销毁和停止Q以?qing)崩溃的风险?/li>

基础用法

使用场景Q?/span>游戏中我们经怼(x)随时间的变化而做一些逻辑判断Q如撞(g)。ؓ(f)?jin)解决以上问题,我们引入了(jin)调度器Q这使得游戏能够更好的处理动态事件。Cocos2d-x提供?jin)多U调度机Ӟ在开发中我们通常?x)用?U调度器Q?/p>

  1. 默认调度?schedulerUpdate()
  2. 自定义调度器:schedule(SEL_SCHEDULE selector, float interval, unsigned int repeat, float delay)
  3. 单次调度?scheduleOnce(SEL_SCHEDULE selector, float delay)

以下我们来对q?U调度器做简单的介绍?br />
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
我的理解Q?/span>
我们知道schedulerUpdate()也就是默认调度器的实现是ZupdateҎ(gu)Q该Ҏ(gu)是虚Ҏ(gu)定义在NodecMQ在cocos2dx框架中。会(x)在每ơ绘制一帧之前调用updateҎ(gu)Q但是默认情况下Q这个方法是不启用的?br />也许你也有这个疑问,Z么updateҎ(gu)可以实现调度。可以实现游戏逻辑的判断。这需要对游戏有一个认识,游戏都是׃帧一帧绘制而成Q在一定范围内的不同时刻,对应的会(x)是不同的游戏画面。回想一下,你学q的微积?br />Q如果我们把游戏的看成是微积分,那么q每一帧就是微分。所以率越高,游戏逼真Q越程Q体验度高。我们也可以借助q一思想来理解,Z官方框架中会(x)对update做出下面q句解释?br />该调度器是用Node的刷C件updateҎ(gu)Q该Ҏ(gu)在每帧绘制之前都?x)被调用一ơ。由于每帧之间时间间隔较短,所以每帧刷Cơ已_完成大部分游戏过E中需要的逻辑判断?/span>l色q句话是引用自官方,可能你会(x)不理?br />Z么说每之间间隔较短Q所以每一帧刷C此够完成部分游戏逻辑的判断?br />由官Ҏ(gu)我们知道一下代码的执行序Q下面用伪代码表C?br />{
       1Q?span style="line-height: 25.2000007629395px; color: #000000; background-color: #ffffff;">
         update();执行updateҎ(gu)
         drawOneFrame();l制一?br />        go 1;
}
׃面的伪代码我们知道其惌辄意思是_(d)׃帧率比较高,能模拟出更真实的效果。而updateҎ(gu)敲好是在两之间调用Q所以update的执行时间一般来说是和率相互挂钩?br />也就是说update里面的所有变量其实是无限近于drawOneFrame()的。所以我们可以再update中书写一些游戏逻辑。简而言之,在update里面可以做的事等效于l每一帧里面各个对象的做逻辑判断?br />

接下来分析下自定义调度器Q先看官Ҏ(gu)档解说?/span>

自定义调度器(scheduler)

游戏开发中Q在某些情况下我们可能不需要频J的q行逻辑(g),q样可以提高游戏性能。所以Cocos2d-xq提供了(jin)自定义调度器Q可以实C一定的旉间隔q箋调用某个函数?/p>

׃引擎的调度机Ӟ自定义时间间隔必d于两帧的间隔Q否则两帧内的多ơ调用会(x)被合q成一ơ调用。所以自定义旉间隔应在0.1U以上?/p>

同样Q取消该调度器可以用unschedule(SEL_SCHEDULE selector, float delay)?br />我的理解:
其实dq个解说你应该更清楚?jin)我前面理论的正性,如果你定义的间隔旉比两帧短Q也是_(d)在同一帧类不断的重复回调selector指向的方法。但q是不需要的所以官方会(x)说将
两内的多次调用?x)被合ƈ成一ơ调用?br />自定义时间应该在0.1U以上,帧率是10.也就是你定义的定时器的频率应该小?0Q或者说间隔旉应该大于0.1?br />

当然cocos2dx框架q提供单ơ调度器具体看官Ҏ(gu)档,q个很好理解了(jin)Q不解释和分析?br />
2015/4/6上午1:03:59



swp 2015-04-06 00:57 发表评论
]]>
02-cocos2dx-基本内功W一?常用宏定?/title><link>http://www.shnenglu.com/sixleaves/archive/2014/10/09/208522.html</link><dc:creator>swp</dc:creator><author>swp</author><pubDate>Thu, 09 Oct 2014 06:29:00 GMT</pubDate><guid>http://www.shnenglu.com/sixleaves/archive/2014/10/09/208522.html</guid><wfw:comment>http://www.shnenglu.com/sixleaves/comments/208522.html</wfw:comment><comments>http://www.shnenglu.com/sixleaves/archive/2014/10/09/208522.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/sixleaves/comments/commentRss/208522.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/sixleaves/services/trackbacks/208522.html</trackback:ping><description><![CDATA[<strong>q篇主要ȝ下cocos2dx中常用到?大宏定义Q数学类宏定义、数据结构相兛_定义、对象相兛_定义Q,׃在win下的vs~译太慢Q所以这些测试代码都是在mac下编译的Q有如下</strong> <div><strong>之所以分Z大类是ؓ(f)?jin)方便记忆、归U뀂分cM在于分细、而在于简U、容易记忆?br /> </strong><strong style="color: red;">1.数学相关的宏</strong><strong><br /> CCRANDOM_MINUS1_1()、CCRANDOM_0_1()、CC_DEGREES_TO_RADIANS、CC_RADIANS_TO_DEGREES()</strong><br /> <div style="background-color: #eeeeee; font-size: 13px; border-left-color: #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><strong><span style="color: #008080;">1</span> log("CCRANDOM_MINUS1_1=%f", CCRANDOM_MINUS1_1());<br /> <span style="color: #008080;">2</span> log("CCRANDOM_0_1=%f", CCRANDOM_0_1());<br /> <span style="color: #008080;">3</span> log("CC_DEGREES_TO_RADIANS(30)=%f", CC_DEGREES_TO_RADIANS());<br /> <span style="color: #008080;">4</span> log("CC_RADIANS_TO_DEGREES(180)=%f",CC_RADIANS_TO_DEGREES());<br /> <span style="color: #008080;">5</span> <span style="color: #0000ff;">int</span> x = 10;<br /> <span style="color: #008080;">6</span> <span style="color: #0000ff;">int</span> y = 20;<br /> <span style="color: #008080;">7</span> CC_SWAP(x, y, <span style="color: #0000ff;">int</span>);<br /> <span style="color: #008080;">8</span> log("交换后x=%d,y=%d",x,y);</strong></div> <strong>输出Q? </strong> <div> <div style="background-color: #eeeeee; font-size: 13px; border-left-color: #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><strong><span style="color: #008080; ">1</span> cocos2d: CCRANDOM_MINUS1_1()=-0.999984<br /> <span style="color: #008080; ">2</span> cocos2d: CCRANDOM_0_1()=0.131538<br /> <span style="color: #008080; ">3</span> cocos2d: CC_DEGREES_TO_RADIANS()=0.523599<br /> <span style="color: #008080; ">4</span> cocos2d: CC_RADIANS_TO_DEGREES()=20626.480469<br /> <span style="color: #008080; ">5</span> cocos2d: x=20,y=10</strong></div> </div> <strong><span style="color: red;">#1.2断言?/span></strong> <div><font color="#ff0000"><strong>把这个归位数学类Q是因ؓ(f)我认为,断言本n是属于数学的一U抽象名?br /> </strong></font><strong> </strong> <div><font color="#ff0000"><span style="color: #000000;"><strong>ASSERT(cone, msg);</strong></span></font></div> <div><font color="#ff0000"><span style="color: #000000;"><strong>W一个参数是条gQؓ(f)false则提Cmsg消息?/strong></span></font></div> <div> <div style="background-color: #eeeeee; font-size: 13px; border-left-color: #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><strong><span style="color: #008080; ">1</span>     Point *point = NULL;<br /> <span style="color: #008080; ">2</span> <span style="color: #008000; ">//</span><span style="color: #008000; ">    CCAssert(point != NULL,"something wrong");</span><span style="color: #008000; "><br /> </span><span style="color: #008080; ">3</span> <span style="color: #008000; "></span>    CCASSERT(point != NULL, "somthing wrong");</strong></div> </div> <strong> 输出: </strong> <div> <div style="background-color: #eeeeee; font-size: 13px; border-left-color: #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><strong><span style="color: #008080; ">1</span> cocos2d: Assert failed: somthing wrong<br /> <span style="color: #008080; ">2</span> Assertion failed: (point != __null), function init, file /Users/mac/Desktop/gameDevelopment/1410/testMacro/Classes/HelloWorldScene.cpp, line 39.</strong></div> <div><strong><br /> </strong></div> <div><strong><br /> </strong></div> </div> <div><span style="color: red;"><strong>2.与特定数据结构相关的?主要用来遍历、如同P代器)</strong></span></div> <div><strong>CCARRAY_FOREACH、CCDICT_FOREACH</strong></div> <div><strong>CCARRAY_FOREACH</strong></div> <div> <div style="background-color: #eeeeee; font-size: 13px; border-left-color: #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><strong><span style="color: #008080; ">1</span>     __Array * arrayMe = __Array::create();<br /> <span style="color: #008080; ">2</span>     arrayMe->addObject(__Integer::create(1));<br /> <span style="color: #008080; ">3</span>     arrayMe->addObject(__Integer::create(2));<br /> <span style="color: #008080; ">4</span>     arrayMe->addObject(__Integer::create(3));<br /> <span style="color: #008080; ">5</span>     Ref * <span style="color: #0000FF; ">ref</span> = NULL;<br /> <span style="color: #008080; ">6</span>     CCARRAY_FOREACH(arrayMe, <span style="color: #0000FF; ">ref</span>) {<br /> <span style="color: #008080; ">7</span>         Integer *pInt = (Integer *)<span style="color: #0000FF; ">ref</span>;<br /> <span style="color: #008080; ">8</span>         log("CCARRAY_FOREACH:%d", pInt->getValue());<br /> <span style="color: #008080; ">9</span>     }</strong></div> </div> <div style="background-color: #eeeeee; font-size: 13px; border-left-color: #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><strong><br /> </strong></div> <div style="background-color: #eeeeee; font-size: 13px; border-left-color: #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><strong>输出Q?/strong></div> <div style="background-color: #eeeeee; font-size: 13px; border-left-color: #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"> <p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><strong>cocos2d: CCARRAY_FOREACH:1</strong></p> <p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><strong>cocos2d: CCARRAY_FOREACH:2</strong></p> <p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><strong>cocos2d: CCARRAY_FOREACH:3</strong></p> </div> <strong> CCDICT_FOREACH </strong> <div> <div style="background-color: #eeeeee; font-size: 13px; border-left-color: #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><strong><span style="color: #008080; ">1</span>     __Dictionary * dict = __Dictionary::create();<br /> <span style="color: #008080; ">2</span>     dict->setObject(__Integer::create(1), "one");<br /> <span style="color: #008080; ">3</span>     dict->setObject(__Integer::create(2), "two");<br /> <span style="color: #008080; ">4</span>     dict->setObject(__Integer::create(3), "three");<br /> <span style="color: #008080; ">5</span>     DictElement *el = NULL;<br /> <span style="color: #008080; ">6</span>     CCDICT_FOREACH(dict, el) {<br /> <span style="color: #008080; ">7</span>         __Integer *pVlaue = (__Integer*)el->getObject();<br /> <span style="color: #008080; ">8</span>         log("KEY=%s,CCDICT_FOREACH %d",el->getStrKey(),pVlaue->getValue());<br /> <span style="color: #008080; ">9</span>     }</strong></div> </div> <strong> 需要注意的是dictionary中得元素都是DictElementcdQ其装?jin)每个元素的Object和对应的key?br /> </strong> <div><strong>输出:</strong></div> <div> <p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><strong>cocos2d: KEY=one,CCDICT_FOREACH 1</strong></p> <p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><strong>cocos2d: KEY=two,CCDICT_FOREACH 2</strong></p> <p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><strong>cocos2d: KEY=three,CCDICT_FOREACH 3</strong></p> <p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><strong><br /> </strong></p> <p style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><strong><br /> </strong></p> </div> <div><span style="color: red;"><strong>3.对象相关宏定?/strong></span></div> <div><span style="color: red;"><strong>#3.1对象创徏Ҏ(gu)宏CREATE_FUNC</strong></span></div> <div><span style="color: #008000;"><strong>q里直接贴出q个的宏定义Q其主要意?/strong></span></div> <div><span style="color: #008000;"><strong>是先new、new完后是通过init初始化,而不是构造函数。如?/strong></span></div> <div><span style="color: #008000;"><strong>initq回falseQ也是p|。则释放对象q回NULL。否则,把其加入</strong></span></div> <div><span style="color: #008000;"><strong>自动理的内存池Q然后返回该对象的引用(本质是指针)(j)?/strong></span></div> <div> <div style="background-color: #eeeeee; font-size: 13px; border-left-color: #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><strong><span style="color: #008080; "> 1</span> <span style="color: #0000FF; ">#define</span> CREATE_FUNC(__TYPE__) \<br /> <span style="color: #008080; "> 2</span> <span style="color: #0000FF; ">static</span> __TYPE__* create() \<br /> <span style="color: #008080; "> 3</span> { \<br /> <span style="color: #008080; "> 4</span>     __TYPE__ *pRet = <span style="color: #0000FF; ">new</span> __TYPE__(); \<br /> <span style="color: #008080; "> 5</span>     <span style="color: #0000FF; ">if</span> (pRet && pRet->init()) \<br /> <span style="color: #008080; "> 6</span>     { \<br /> <span style="color: #008080; "> 7</span>         pRet->autorelease(); \<br /> <span style="color: #008080; "> 8</span>         <span style="color: #0000FF; ">return</span> pRet; \<br /> <span style="color: #008080; "> 9</span>     } \<br /> <span style="color: #008080; ">10</span>     <span style="color: #0000FF; ">else</span> \<br /> <span style="color: #008080; ">11</span>     { \<br /> <span style="color: #008080; ">12</span>         delete pRet; \<br /> <span style="color: #008080; ">13</span>         pRet = NULL; \<br /> <span style="color: #008080; ">14</span>         <span style="color: #0000FF; ">return</span> NULL; \<br /> <span style="color: #008080; ">15</span>     } \<br /> <span style="color: #008080; ">16</span> }<br /> <span style="color: #008080; ">17</span> </strong></div> </div> <div><span style="color: red;"><strong>#3.2属性定义宏</strong></span></div> <div><span style="color: #000000;"><strong>CC_PROPERTY(tpye, varName, funName);</strong></span></div> <div><span style="color: #008000;"><strong>q个功能其就是用C++得方式,实现?jin)C#中的属性,通过q个宏定义,</strong></span></div> <div><span style="color: #008000;"><strong>可以自动生protected的成员变量,和public的虚setter、getterҎ(gu)</strong></span></div> <div><span style="color: #008000;"><strong>具体的setter、getter实现需要,自己实现。如?/strong></span></div> <div> <div style="background-color: #eeeeee; font-size: 13px; border-left-color: #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><strong><span style="color: #008000; ">//</span><span style="color: #008000; ">Monster.h</span><span style="color: #008000; "><br /> </span>#ifndef __Monster_H__<br /> <span style="color: #0000FF; ">#define</span> __Monster_H__<br /> #include "cocos2d.h"<br /> USING_NS_CC;<br /> <span style="color: #0000FF; ">class</span> Monster:<span style="color: #0000FF; ">public</span> Sprite {<br />     CC_PROPERTY(<span style="color: #0000FF; ">int</span>, _monsterHp, MonsterHp);<br /> <span style="color: #0000FF; ">public</span>:<br />     <span style="color: #0000FF; ">virtual</span> <span style="color: #0000FF; ">bool</span> init();<br />     CREATE_FUNC(Monster);<br /> };<br /> <span style="color: #0000FF; ">#endif</span><br /> <span style="color: #008000; ">//</span><span style="color: #008000; ">Monster.cpp<br /> </span><span style="color: #008000; ">//</span><span style="color: #008000; "><br /> </span><span style="color: #008000; ">//</span><span style="color: #008000; ">  Monster.cpp<br /> </span><span style="color: #008000; ">//</span><span style="color: #008000; ">  testMacro<br /> </span><span style="color: #008000; ">//</span><span style="color: #008000; "><br /> </span><span style="color: #008000; ">//</span><span style="color: #008000; ">  Created by sixleaves on 14-10-9.<br /> </span><span style="color: #008000; ">//</span><span style="color: #008000; "><br /> </span><span style="color: #008000; ">//<br /> </span><br /> #include "Monster.h"<br /> <br /> <br /> <span style="color: #0000FF; ">void</span> Monster::setMonsterHp(<span style="color: #0000FF; ">int</span> var) {<br />     _monsterHp = var;<br /> }<br /> <br /> <span style="color: #0000FF; ">int</span> Monster::getMonsterHp() {<br />     <span style="color: #0000FF; ">return</span> _monsterHp;<br /> }<br /> <br /> <span style="color: #0000FF; ">bool</span> Monster::init() {<br />     <span style="color: #0000FF; ">return</span> <span style="color: #0000FF; ">true</span>;<br /> }<br /> <span style="color: #008000; ">//</span><span style="color: #008000; ">HelloWorldScene.cpp</span><span style="color: #008000; "><br /> </span> auto monster = Monster::create();<br />  monster->setMonsterHp(100);<br />  log("monster HP = %d", monster->getMonsterHp());</strong></div> </div> <strong> 输出Q? cocos2d: monster HP = 100 </strong> <div><strong>提示Q还有CC_RROPERTY_XXXXpd的其他宏定义Q这里只介绍q个Q因为比较常使用Q其他自׃(jin)解?/strong></div> <div><strong><br /> </strong></div> <div><strong>2014.10.09 by sixleaves</strong></div> </div> </div><img src ="http://www.shnenglu.com/sixleaves/aggbug/208522.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/sixleaves/" target="_blank">swp</a> 2014-10-09 14:29 <a href="http://www.shnenglu.com/sixleaves/archive/2014/10/09/208522.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>01-cocos2dx-基本内功W一?基本数据l构http://www.shnenglu.com/sixleaves/archive/2014/10/07/208510.htmlswpswpTue, 07 Oct 2014 15:59:00 GMThttp://www.shnenglu.com/sixleaves/archive/2014/10/07/208510.htmlhttp://www.shnenglu.com/sixleaves/comments/208510.htmlhttp://www.shnenglu.com/sixleaves/archive/2014/10/07/208510.html#Feedback0http://www.shnenglu.com/sixleaves/comments/commentRss/208510.htmlhttp://www.shnenglu.com/sixleaves/services/trackbacks/208510.html W一部分Q?/strong>
      int对应的装是IntegerQ在cocos2dx中创U整数对象是用createҎ(gu)Qauto pInt = Integer::create(30);
      int       ---------auto pInt      = __Integer::create(2);
      double ---------auto pDouble =  __Double::create(1.0);
      float    ---------auto pFloat    =  __Float::create(2.0);
W二部分Q?/strong>
      复合数据l构
      __String
      auto pStr = String::create("cocos2dx");
      auto pStr2 = String::createWithFormat("I love %s", pStr->getCString());
  bool isEqualEach = pStr->isEqual(pStr2);
  log("%s",isEqualEach == true?"Equal":"not Equal");
     #l果是notEqual
     __Array
     Array对象是对C++中数l的装。Array中的元素是Ref、可以存不同的数据类型?br />      创徏一个空数组QArray::create()
     增:(x)addpd、addObject 删:(x)removeXXXpdQ代表removeObjectAtIndext() ?replaceObjectAtIndex()  查:(x)getpd、getIndexOfObject()
    
     __Dictionary
     创徏字典对象Qauto pDict = Dictionary::create()
     d键值对QpDict->setObject(obj, "key");
     删除键对应的| pDict->removeObjectForKey("someKey");
     ?                QpDict->ObjectForKey("someKey");
     auto pDict = Dictionary::create();
     auto pV1 = String::create("V1");
     auto pV2 = String::create("V2");
     pDict->setObject(pV1, "key1");
     pDict->setObject(pV2, "key2");
     String *pStr1 = (String*)pDict->ObjectForKey("key1");
     String *pStr2 = (String*)pDict->ObjectForKey("key2");
     log("str1 = %s,str2 = %s", pStr1->getCString(), pStr2->getCString());
    #使用ObjectForKey获得的是Object对象Q要强制cd转换Z定的那个类型?br />     Size、Rect、Point
    Size于Rect的区别是Size只有长宽的属性,而Rectq有个v始点属性,他们都是表示一块矩形区域?br />     其中Rect最怋用的是用来判断某个点在不再这个矩形区域内。其实他们都是对象,不像OC中是l构体?br />      1     //生成两个?/span>
 2     Point point1 = Point(10,10);
 3     Point point2 = Point(60,60);
 4     Point point3;
 5     //?与x轴的夹角
 6     log("\n?(%f,%f)与x轴的夹角?%f",point1.x,point1.y,point1.getAngle());
 7     //两个点的夹角
 8     log("\n?(%f,%f)与点2(%f,%f)的夹角ؓ(f):%f",point1.x,point1.y,point2.x,point2.y,point1.getAngle(point2));
 9     //两个点的距离
10     log("\n?(%f,%f)与点2(%f,%f)的距Mؓ(f):%f",
11     point1.x,point1.y,point2.x,point2.y,point1.getDistance(point2));
12     //两个点相?/span>
13     point3 = point1 + point2;
14     log("\n(%f,%f)+(%f,%f)=(%f,%f)",point1.x,point1.y,point2.x,point2.y,point3.x,point3.y);
15     //两个点相?/span>
16      point3 = point1-point2;
17     log("\n(%f,%f)-(%f,%f)=(%f,%f)",point1.x,point1.y,point2.x,point2.y,point3.x,point3.y);
18     //除法
19     point3 = point1/2;
20     log("\n(%f,%f)/2=(%f,%f)",point1.x,point1.y,point3.x,point3.y);
21     //乘法
22     point3 = point1*2;
23     log("\n(%f,%f)+(%f,%f)=(%f,%f)",point1.x,point1.y,point2.x,point2.y,point3.x,point3.y);
24 
25     //使用SizeMake创徏两个Size
26     Size size1 = Size(10, 20);
27     Size size2 = Size(50, 60);
28     Size size3;
29     //两个Size相加
30     size3 = size1 + size2;
31     log("size(%f,%f)+size(%f,%f)=size(%f,%f)",size1.width,size1.height,size2.width,size2.height,size3.width,size3.height);
32     //两个Size相减
33     size3 = size1 - size2;
34     log("size(%f,%f)Qsize(%f,%f)=size(%f,%f)",size1.width,size1.height,size2.width,size2.height,size3.width,size3.height);
35     //Size乘法
36     size3 = size1*10;
37     log("size(%f,%f)*10=size(%f,%f)",size1.width,size1.height,size3.width,size3.height);
38     //Size除法
39     size3 = size1/10;
40     log("size(%f,%f)/10=size(%f,%f)",size1.width,size1.height,size3.width,size3.height);
41 
42 
43     //Rect试
44     //生成一个坐标ؓ(f)10Q?0Q宽?0Q高?0的矩形区?/span>
45     Rect rect = Rect(10, 20, 50, 30);
46     //生成两个?/span>
47     point1 = Point(15,25);
48     point2 = Point(100,100);
49     if (rect.containsPoint(point1)) {
50         log("rect包含点point1\n");
51     }else{
52         log("rect不包含点point1\n");
53     }
54     if (rect.containsPoint(point2)) {
55         log("rect包含点point2\n");
56     }else{
57         log("rect不包含点point2\n");
58     }
59     //获取rect矩Ş区域最左、右、上、下、中间的坐标?/span>
60     float maxX = rect.getMaxX();
61     float minX = rect.getMinX();
62     float maxY = rect.getMaxY();
63     float minY = rect.getMinY();
64     float midX = rect.getMidX();
65     float midY = rect.getMidY();
66     log("rect的左下角坐标?%f,%f)\n左上角坐标ؓ(f)(%f,%f)\n右下角坐标ؓ(f)(%f,%f)\n右上角角坐标?%f,%f)\n中点坐标?%f,%f)\n"
67         ,minX,minY,minX,maxY,maxX,minY,maxX,maxY,midX,midY);
by sixleaves

swp 2014-10-07 23:59 发表评论
]]>
cocos2dx3.2-思维W记-动作?/title><link>http://www.shnenglu.com/sixleaves/archive/2014/09/28/208443.html</link><dc:creator>swp</dc:creator><author>swp</author><pubDate>Sun, 28 Sep 2014 08:13:00 GMT</pubDate><guid>http://www.shnenglu.com/sixleaves/archive/2014/09/28/208443.html</guid><wfw:comment>http://www.shnenglu.com/sixleaves/comments/208443.html</wfw:comment><comments>http://www.shnenglu.com/sixleaves/archive/2014/09/28/208443.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/sixleaves/comments/commentRss/208443.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/sixleaves/services/trackbacks/208443.html</trackback:ping><description><![CDATA[<strong>ȝ下cocos2dx的这些动作,知识大概的ȝQ不是包含所有。文中的名词是自己取得?/strong> <div><strong>首先我们要把握主U,我们在cocos2dx用到的动作都是派生自Actionc,而Action又派生自RefcR而我们主要用到的时属于Actionz的FiniteTimeAction(有限旉的动作类)cLz的类?/strong></div> <div><strong>FiniteTimeAction中得有限旉cd分ؓ(f)两个部分Q一个部分是瞬时动作c?ActionInstant),也就是执行时你是看不到过E,只能看到l果。一部分是ActionInterval(持箋动作c?Q这cd作都是有持箋旉的?/strong></div> <div><strong style="color: #ff0000;">1.框架Q?/strong></div> <div><strong>ActioncL生出:FiniteTimeAction</strong></div> <div><strong>#FiniteTimeActioncL生出:ActionInstantcdActionIntervalc?/strong></div> <div><strong>##ActionInstantcL生出:CallFunccRFlipX、Hide、Place(q里只是列出我常用的)</strong></div> <div><strong>##ActionIntervalcL生出:又分Z大类Q一大类是纯持箋动作cR一大类是动作包装类Q这是我自己l分的)(j)</strong></div> <div><strong>其中U持l动作类包括QBezierBy(To)(贝兹?dng)曲U动?、Blink(闪烁动作)、FadeIn(Out)、JumpBy(To)(跌{动作Q指定v跳位|、高度、次?、RotateBy(To)、ScaleBy(To)(拉动作)?/strong></div> <div><strong>其中一般By是相对的意思当前位|或者倍数QTo是指定绝寏V第一个参数都是指定持l时间?/strong></div> <div><strong>其中动作包装cd括:(x)QRepeat、RepeatForever、Sequence、SpawnQ动作包装类Ҏ(gu)包装的动作有一定副作用Q其副作用一般可֐思义?/strong></div> <div><strong>如上QRepeat包装后的动作是重复指定ơ数被包装的动作、RepeatForever则是持箋不断、Sequence可以包装多个动作、其副作用是让多个动作顺序执?/strong></div> <div><strong>Spawn包装后的动作的副作用是,所有动作一h行?/strong></div> <div><strong><br /> </strong></div> <div><strong style="color: #ff0000;">2.动作的创建:(x)</strong></div> <div><strong>一般动作的创徏是调用相应动作的cȝcreate工厂Ҏ(gu)?/strong></div> <div><strong><br /> </strong></div> <div><strong style="color: #ff0000;">3.动作的执行:(x)</strong></div> <div><strong>一般动作的是发送runAction消息l指定的Sprite对象Q传入参数就是动作对象?/strong></div> <div><br /> </div> <div><strong style="color: #ff0000;">4.几个重要动作Sequence、Spawn、CallFunc</strong></div> <div><strong>Sequence动作的用就是如代码:</strong></div> <div><strong>auto actions = Sequence::create(action1,action2,...,actionN, NULL);</strong></div> <div><strong>sprite->runAction(actions);</strong></div> <div><strong>Spawn的用也一P知识把关键字替换?/strong></div> <div><strong>CallFunc动作是我们就UCؓ(f)回调动作?或者说?/strong><strong style="color: #ff0000;">把函数{化ؓ(f)动作</strong><strong>)Q传入的W二个函数指针需要通过callFunc_selector格式化该函数指针?/strong></div> <div><strong>auto actionCF= CallFunc::create(this, callFunc_selector(HelloWord::sayLove));</strong></div> <div><br /> </div><img src ="http://www.shnenglu.com/sixleaves/aggbug/208443.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/sixleaves/" target="_blank">swp</a> 2014-09-28 16:13 <a href="http://www.shnenglu.com/sixleaves/archive/2014/09/28/208443.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>cocos2dx(0)-sceneDemohttp://www.shnenglu.com/sixleaves/archive/2014/07/30/207858.htmlswpswpWed, 30 Jul 2014 07:49:00 GMThttp://www.shnenglu.com/sixleaves/archive/2014/07/30/207858.htmlhttp://www.shnenglu.com/sixleaves/comments/207858.htmlhttp://www.shnenglu.com/sixleaves/archive/2014/07/30/207858.html#Feedback0http://www.shnenglu.com/sixleaves/comments/commentRss/207858.htmlhttp://www.shnenglu.com/sixleaves/services/trackbacks/207858.html
//
//  ImageScene.h
//  sceneDemo
//
//  Created by sixleaves on 14-7-29.
//
//

#ifndef __sceneDemo__ImageScene__
#define __sceneDemo__ImageScene__

#include "cocos2d.h"
class ImageScene : public cocos2d::Layer
{

public:
    static cocos2d::Scene * createScene();
    virtual bool init();
    CREATE_FUNC(ImageScene);
};

#endif /* defined(__sceneDemo__ImageScene__) */
/*
 ȝ:
 知识点一:
 Scene场景cRLayer层的概念
 其实Scene是一对多得关p?一个场景类可以有多个Layer层?br />  实质上Scene是由Layer层构成的。他们的关系,你可以看?br />  是树(wi)的结构,而且Scene和Layer都承自Nodec,所以其?br />  能有addChildҎ(gu),所以Scene可以把Layerdq去?br />  
 知识点二:宏定义的两个应用
 1.在预~译时期的过滤应?防M性措?
 #ifndef __xxXXxxX_H__
 #define __xxXXxxX_H__
 insert #include code
 #endif
 q样在当包含两次Ӟ׃(x)qo(h)掉下一ơ包含?br />  2.宏函?br />  可以查看CREATE_FUNC的定?
 如下
        #define CREATE_FUNC(__TYPE__) \
        static __TYPE__* create() \
        { \
        __TYPE__ *pRet = new __TYPE__(); \
        if (pRet && pRet->init()) \
        { \
        pRet->autorelease(); \
        return pRet; \
        } \
        else \
        { \
        delete pRet; \
        pRet = NULL; \
        return NULL; \
        } \
        }
“\”L(fng)意义:首先宏函数其实本质上必须写成一行,
           而\只是在编E中对于不方便写在一行的代码的格式化
           它告诉编译器Q我q一行还没结?把下面的l箋整合
           上来成ؓ(f)一行。而在此处Q这样写是ؓ(f)?jin)提高可L?br /> 该函数的作用:创徏指定对象Qƈ且调用这个对象的构造函?init)?br />  
知识点三:C++中的多?br /> 对于同一个父cȝc,调用的方法,取决于对象,q种形式的多?br /> 需要将父类中相应地Ҏ(gu)定义为virutal卛_。其实这是java
中的量使用借口引用的原因、其是Z(jin)适应多态,区别在于C++
中比较啰嗦,而java是默认就是有virtualq种功能的。不用你再写
明?br /> 所以ؓ(f)?jin)能够在创徏q个对象后调用其构造函数init。需要重写它
q就是ؓ(f)什么其父类其声明为virtual的原因。至于createScene
Ua(b)是工厂Ҏ(gu)?br />  
*/

createScene主要q是分别调用Scenecd自定义layercȝ工厂Ҏ(gu)create创徏对象Q让后将其添加到Scene对象中?br />
//
//  ImageScene.cpp
//  sceneDemo
//
//  Created by sixleaves on 14-7-29.
//
//

#include "ImageScene.h"
USING_NS_CC;

Scene * ImageScene::createScene() {
    auto scene = Scene::create();
    auto imageScene = ImageScene::create();
    scene->addChild(imageScene);
    return scene;
}


bool ImageScene::init() {
    Size size = Director::getInstance()->getVisibleSize();
    auto sprite = Sprite::create("CloseSelected.png");
    sprite->setPosition(size.width/2, size.height/2);
    addChild(sprite);
    return true;
}


swp 2014-07-30 15:49 发表评论
]]>
游戏开?2)-cocos2dx框架下mac上编译成antroidhttp://www.shnenglu.com/sixleaves/archive/2014/07/07/207549.htmlswpswpSun, 06 Jul 2014 16:10:00 GMThttp://www.shnenglu.com/sixleaves/archive/2014/07/07/207549.htmlhttp://www.shnenglu.com/sixleaves/comments/207549.htmlhttp://www.shnenglu.com/sixleaves/archive/2014/07/07/207549.html#Feedback0http://www.shnenglu.com/sixleaves/comments/commentRss/207549.htmlhttp://www.shnenglu.com/sixleaves/services/trackbacks/207549.html
cocos2dx因其得天独厚的跨q_性,得以受到众多开发者的晴菜Q包括我在内。那么如何在osxpȝ中编译成antroidE序呢?
我们知道android的开发工具google已经打包提供l我们,光面有完整的定制好的eclipseQ所以我们需要googlel我打包好的
q个安装包adt-bundleXXX。再者我们需要java的运行环境,jdk。还有一个很重要的是ndk。所以你的第一步是到google上下?
first step
       1.Go to google and download adt、ndk?/span>
       2.Go to Oracle and download jdkQ一般苹果默认自带jdkQ除非版本太久,不然不用自己下蝲?jin)?j)

把安装准备好之后Q把他们分别解压到对应文件夹Q我是解压到devQdevelopment的简写)(j)文g夹(cocos2dx也在q个文g多w面)(j)?/span>
接着打开l端~辑/etc/profile文gQ用命o(h)sudo vim /etc/profile,q入后,按iq入~辑状态,在最后一行输?/span>
export NDK_ROOT="q里填写上你的ndk根目?Q然后按Esc按键Q输入wq!保存q出既可以。接着q得输入source /etc/profile
让这个配|文件中讄的环境变量立即生效?/span>
second step
       1.sudo vim /etc/profile and input “export NDK_ROOT="q里填写上你的ndk根目?#8220;"
       2.source /etc/profile

thirdth step 在终端中建立工程Q指定编E语aQ包名,存放位置python cocos.py new HelloWorldDemo -p com.coco2dx.org -l cpp -d ~/Desktop

fourth stepQ?/span>打开HelloWorldDemo目Q?/span>cocos2d/cocos/platform/android/java/src/org/cocos2dx/libQ将其这个库复制到anroid开发^台的源代码目录下Q?/span>

HelloWorldDemo/proj.android/src/org/cocos2dx/目录?/span>Q其实这些都不要Q第四步也很好理解,因ؓ(f)当我们把q个工程导入eclipse时其找不到要引用
的这些包Q所以要其拯到那个目录下Q至于怎么记忆Q理解了(jin)容易,在项目中一共有五个q_Q对应五个文件夹Q我们关注的是antroidQ所以有关键字android
的那个文件夹是对应androidq_的,q入我们要到其源代码目录下,其实也就是src。而拷贝的包是在cocos框架下的所以我们要q入q个框架Q进入之后肯定有对应?/span>
个给q_所对应的库Q所以我们关注platformq个关键字,扑ֈ后进入,扑ֈantroidq_Q在q入其src下,一直进入知道找到l(f)ibq个文g夹,其拯到刚才说的地斏V?br />
finally step

最后一步就是打开eclipseQ选着android工程Q将我们创徏的那个项目中的andoird.projXXX什么这个文件夹导入Q然后你可以编译,q行Q这完成了(jin)转换到antroidq_?br />转换?/span>



swp 2014-07-07 00:10 发表评论
]]>
游戏开?1)-cocos2dx开发环境在mac下的搭徏http://www.shnenglu.com/sixleaves/archive/2014/07/06/207543.htmlswpswpSun, 06 Jul 2014 08:28:00 GMThttp://www.shnenglu.com/sixleaves/archive/2014/07/06/207543.htmlhttp://www.shnenglu.com/sixleaves/comments/207543.htmlhttp://www.shnenglu.com/sixleaves/archive/2014/07/06/207543.html#Feedback0http://www.shnenglu.com/sixleaves/comments/commentRss/207543.htmlhttp://www.shnenglu.com/sixleaves/services/trackbacks/207543.html关于cocos2dx开发环境的搭徏Q在其官方网站其实有详细的说明,q里q行q一步封装和提取?br />
1.׃cocos2dx-3.0版本中用C(jin)python来构建项目,所以首先你?/span>pȝ要具有python开发环境?/span>
first step:M载python2.7.7版本。但是mac默认其实已经自带?jin),可以不用在M载安装了(jin)?/span>

2.׃我们可以通过python写的命o(h)行程序很方便的构造工E,所以我们有必要学习(fn)其构造工E的命o(h)
tools/cocos2d-console/bind到系l环境变量或者直接cd tools/cocos2d-console/bin到该目录?/span>
然后执行python cocos.py q个pythonq行E序Q?/span>我们需要说明我们工E的名字Q用new指定。需要说明包名,?p 指定包名
?l 指定语言 -d指定q个目文g攑֜哪里。如下:(x)
python cocos.py new HelloWorldDemo -p com.coco2dx.org -l cpp -d ?Desktop
也就是创建HelloWorldDemoq个目Q把它放在桌面,其编写语a用c++、其包名?/span>com.coco2dx.org
q样我们创Z(jin)一个工E项目?br />
3.用Xcode打开工程Q进入HelloWorldDemo里面的proj.ios_mac文g多w面,后缀为xcodeproj的文Ӟ其名字就是刚才创建的工程名称?/span>

2014.07.06 周日
16Q?7Q?0
于福?创徏

swp 2014-07-06 16:28 发表评论
]]>
þþ޾Ʒһ| ¾þƵ| þۺϾɫŷۺϺݺ| ۿƷþ| þһҹ| 99þþƷһ| ŷպƷþþþ| ҹþƷþþþ| ƷȾþþø| AVþþþò| ƬҹƬþ | Ļ˾Ʒþò| ޾Ʒtvþþþþþþþ| 91þþžվ | 99þѹƷ| ҹƷþþĸ| ҹƷþþþþž| Ʒþþþþ12 | þþþþþ97| þһۺ| ձƷþþþþþþ| ĻƷѾþþ| ŷƷþþ| þþþþþþ˳| һۺϾþ| þô㽶| þˬˬƬav | һһþaþþƷۺ鶹| þþþþaŷa| AV12þ| þۺ³³| þþþùƷ۲ӰԺ| þùƷ԰| Ʒ˾þ˵Ӱ| Ʒþþþþþ| Ʒþˬۺ| þˬˬƬAV鶹| ޹徫Ʒ߾þ| þþۺ| AVþþƷݺݰ˳| þþƷ޾Ʒ2020|