子类、变换-cocos2d-x 学习点滴(5) Scene,Director, Layer 和 Sprite-by小雨

今天一直在学习子类、变换-之类的问题,现在正好有机会和大家享共一下.

    Scene:

           在应用程序中,scene是绝对独立的一块,在很多其他的引擎中,也把它称之为“画布”或者“舞台”。

           在cocos2d-x中,一个应用可以有多个scene,但任何时刻只能有一个是acitve的。一个CCScene由多个CCNode构成,一般是括包若干个CCLayer,而CCLayer又括包多个CCSprite。要需意注的是,CCScene,CCLayer和CCSprite都承继了CCNode,只不过后者还有其他的类父,用使多承继停止实现。可以知得cocos2d-x的可视化数据组织就是一棵场景树,只不过其中的有些中间节点被付与了额定的逻辑(比如CCScene和CClayer)

           由于Scene是CCNode的子类,所以可以停止手动或者用使Actions停止变换。

           有一族特别的scene叫CCTransitionScene,从CCScene派生而来,可以实现场景切换效特,比如色褪,翻页等效果

    Director:

           Director是一个享共的单例对象,用来制控场景Scene之间的切换。Director晓得以后Active的Scene。可以通过Director在场景栈的栈顶push一个新的scene来停止场景切换。将之前的Scene B压栈,push Scene A,但并不从内存中毁销Scene B。如果将栈顶Scene A弹出,则会切换到Scene B,而且状态也恢复到之前压栈的状态。

          Director 还责负OpenGL ES 的初始化。

    Layer:

            Layer是一种可以理处触摸件事的CCNode,可以在代码中看它除了额定承继CCNode以外,还承继了CCTouchDelegate。CCLayer晓得如何制绘自己,并且可以半透,让玩家看到其他的Layer。CCLayer在定义游戏的观外和行为时非常用有,所以你该应花量大的编码时光来发开自己所要需的CCLayer子类。

            CCLayer可以在ccTouchBegan, ccTouchMoved, ccTouchEnded和ccTouchCancelled中理处响应的件事,而且在场景中的全部Layer都市收到这些件事,直到某个Layer理处了为止。

             除了可以发开自己所要需的CCLayer子类以外,cocos2d-x还供给了几种实现好的Layer,比如CCMenu,CCColorLayer和CCLayerMultiplex等。

             CCLayer可以括包任何CCNode的子类,括包CCSprite,CCLabels乃至其他的CCLayer子类。CCLayer也可以手动或者用使Actions停止变换。 

             以下是用使一种渐变Layer的示例:

     1 CCLayerGradient* layer1 = CCLayerGradient::create(ccc4(255, 0, 0, 255), ccc4(255, 0, 255, 255)); 2 layer1->setContentSize(CCSizeMake(80, 80)); 3 layer1->setPosition(ccp(50,50)); 4 addChild(layer1); 5 6 CCLayerGradient* layer2 = CCLayerGradient::create(ccc4(0, 0, 0, 127), ccc4(255, 255, 255, 127)); 7 layer2->setContentSize(CCSizeMake(80, 80)); 8 layer2->setPosition(ccp(100,90)); 9 addChild(layer2); 10 11 CCLayerGradient* layer3 = CCLayerGradient::create(); 12 layer3->setContentSize(CCSizeMake(80, 80)); 13 layer3->setPosition(ccp(150,140)); 14 layer3->setStartColor(ccc3(255, 0, 0)); 15 layer3->setEndColor(ccc3(255, 0, 255)); 16 layer3->setStartOpacity(255); 17 layer3->setEndOpacity(255); 18 ccBlendFunc blend; 19 blend.src = GL_SRC_ALPHA; 20 blend.dst = GL_ONE_MINUS_SRC_ALPHA; 21 layer3->setBlendFunc(blend); 22 addChild(layer3);

    

    Sprite:

              Sprite的观点和其他的2D引擎是差不多的,就是一个2D的图像,可以旋转移平放缩。

              Sprite可以括包其他的Sprite作为子节点,当父节点被变换时,子节点会起一被变换。

              Sprite可以手动或者用使Actions停止变换。

 

文章结束给大家分享下程序员的一些笑话语录: 这年头的互联网真是娱乐了中国,网民们从各种各样的“门”里钻来钻去,又有好多“哥”好多“帝”,值得大家品味不已……网络经典语录,关于IT与互联网,经典与您分享!

posted @ 2013-04-15 21:13  坚固66  阅读(227)  评论(0编辑  收藏  举报