温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Scene,Director, Layer 和 Sprite

发布时间:2020-07-19 07:23:20 来源:网络 阅读:884 作者:imik 栏目:游戏开发

  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的示例:

CCLayerGradient* layer1 = CCLayerGradient::create(ccc4(25500255), ccc4(2550255255));

 2 layer1->setContentSize(CCSizeMake(8080)); 

3 layer1->setPosition(ccp(50,50)); 

4 addChild(layer1); 

CCLayerGradient* layer2 = CCLayerGradient::create(ccc4(000127), ccc4(255255255127)); 

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(8080));

13 layer3->setPosition(ccp(150,140));

14layer3->setStartColor(ccc3(25500));

15 layer3->setEndColor(ccc3(2550255));

16 layer3->setStartOpacity(255);

17layer3->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进行变换。
 希望能为需要的朋友解决问题,
如果还不能解决可以联系QQ897703027,email: hongjiandao@163.com
欢迎大家交流cocos2d-x,C++等各方面的知识,或者创业团队求收留,本人目前在做cocos2dx网游
 

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI