• 子类、变换cocos2dx 学习点滴(5) Scene,Director, Layer 和 Spriteby小雨


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

        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与互联网,经典与您分享!

  • 相关阅读:
    SQL表连接查询inner join left join right join full join ...
    希尔伯特空间回顾(简直太好了)
    pytorch的matmul怎么广播
    pytorch怎么抽取中间的特征或者梯度
    winedt102安装
    数据挖掘 关联规则
    git 命令
    caffe: c++11支持
    匈牙利算法
    ubuntu两个conda安装和切换
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3022911.html
Copyright © 2020-2023  润新知