zoukankan      html  css  js  c++  java
  • Cocos2D-x权威指南:通过节点控制屏幕中的全体渲染对象

        本节,已经能够利用我们眼下所学的知识做出一些有趣的东西。之前已经说过,CCNode类没有贴图,也就是说在屏幕上单独建立一个节点是没有不论什么效果的,可是能够通过这个“无形”的节点来控制屏幕上的节点。如今就開始吧!
        1. 增加节点
        新建一个项目,并在HelloWorldScene.cpp文件里的init函数中做如代码清单3-2的代码所看到的的改动。
        代码清单3-2 增加节点
        bool HelloWorld::init()
        {
    
            if ( !CCLayer::init() )
            {
                return false;
            }
    
            //创建一个节点
            CCNode *anode = CCNode::create();
            //将节点作为子节点增加场景类中
            this->addChild(anode,0);
           
            CCMenuItemImage *pCloseItem = CCMenuItemImage::create(
                                                "CloseNormal.png",
                                                "CloseSelected.png",
                                                this,
            menu_selector(HelloWorld::menuCloseCallback) );
           pCloseItem->setPosition( ccp(CCDirector::sharedDirector()->getWinSize().width - 20, 20) );
           
            CCMenu* pMenu = CCMenu::create(pCloseItem, NULL);
            pMenu->setPosition( CCPointZero );
            //将菜单作为子节点增加之前定义的节点中
            anode->addChild(pMenu, 1);
           
            CCLabelTTF* pLabel = CCLabelTTF::create("Hello World", "Thonburi", 34);
           
            CCSize size = CCDirector::sharedDirector()->getWinSize();
           
            pLabel->setPosition( ccp(size.width / 2, size.height - 20) );
    
            //将标签作为子节点增加之前定义的节点中   
            anode->addChild(pLabel, 1);
           
            CCSprite* pSprite = CCSprite::create("HelloWorld.png");
           
            pSprite->setPosition( ccp(size.width/2, size.height/2) );
           
            //将背景图片作为子节点增加之前定义的节点中   
            anode->addChild(pSprite, 0);
            return true;}

        首先通过create函数创建一个节点anode,把anode作为子节点使用addChild函数增加HelloWorld场景类对象中;然后把本来作为子节点增加HelloWorld场景类对象中的对象,使用addChild函数作为子节点增加anode中。这些对象包含菜单类对象、标签类对象、人物精灵类对象。这些对象的类都是CCNode类的子类。
        执行项目,发现和改动前的项目并无差别,如图3-4所看到的。  
        2. 改变位置
        改动HelloWorldScene.cpp文件里的init方法,如代码清单3-3所看到的。
        代码清单3-3 设置节点位置
            //设置节点位置
            anode->setPosition(ccp(50,50));
        执行效果如图3-5所看到的。


         

        能够看到,总体都跟着节点移动了。
        3. 设置缩放
        以下改动这段代码如代码清单3-4所看到的,看一下缩放的效果。
        代码清单3-4 设置缩放代码
        //设置缩放
        anode->setScale(0.5);
        执行效果如图3-6所看到的。


         

        4. 总体旋转
        最后再来试验总体旋转,如代码清单3-5所看到的。由于默认锚点在左下角,因此须要首先移动一下总体的位置,否则总体一转,屏幕中将仅仅显示黑屏。注意角度设置为角度制。
        代码清单3-5 设置旋转
        //设置旋转
        anode->setPosition(ccp(200,200));   
        anode->setRotation(90.0);
        执行效果如图3-7所看到的。


         

        本节介绍了屏幕中渲染对象的基础类CCNode,下一节将介绍控制游戏显示的导演类CCDirector。

  • 相关阅读:
    Kali下mMetasploit数据连不上
    win10wifi消失
    cmd命令ipconfig或者ping无法使用
    WebFuzzing方法
    SyntaxError: Non-ASCII character 'xe5' in file c:/Users/Administrator/Desktop/1.py on line 6, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
    Hash传递攻击的本质、缓解方式及部分绕过手段
    python常見報錯
    How to Hack APIs in 2021(API漏洞利用)
    Burp Suite中文乱码
    RancherOS安装(方便漏洞复现)
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/3770186.html
Copyright © 2011-2022 走看看