Cocos2D-x权威指南:通过节点控制屏幕中的全体渲染对象

本文介绍如何使用Cocos2d-x中的CCNode类控制屏幕元素的位置、缩放及旋转,实现游戏界面的动态调整。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    本节,已经可以利用我们目前所学的知识做出一些有趣的东西。之前已经说过,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。

内容概要:该研究通过在黑龙江省某示范村进行24小时实地测试,比较了燃煤炉具与自动/手动进料生物质炉具的污染物排放特征。结果显示,生物质炉具相比燃煤炉具显著降低了PM2.5、CO和SO2的排放(自动进料分别降低41.2%、54.3%、40.0%;手动进料降低35.3%、22.1%、20.0%),但NOx排放未降低甚至有所增加。研究还发现,经济性和便利性是影响生物质炉具推广的重要因素。该研究不仅提供了实际排放数据支持,还通过Python代码详细复现了排放特征比较、减排效果计算和结果可视化,进一步探讨了燃料性质、动态排放特征、碳平衡计算以及政策建议。 适合人群:从事环境科学研究的学者、政府环保部门工作人员、能源政策制定者、关注农村能源转型的社会人士。 使用场景及目标:①评估生物质炉具在农村地区的推广潜力;②为政策制定者提供科学依据,优化补贴政策;③帮助研究人员深入了解生物质炉具的排放特征和技术改进方向;④为企业研发更高效的生物质炉具提供参考。 其他说明:该研究通过大量数据分析和模拟,揭示了生物质炉具在实际应用中的优点和挑战,特别是NOx排放增加的问题。研究还提出了多项具体的技术改进方向和政策建议,如优化进料方式、提高热效率、建设本地颗粒厂等,为生物质炉具的广泛推广提供了可行路径。此外,研究还开发了一个智能政策建议生成系统,可以根据不同地区的特征定制化生成政策建议,为农村能源转型提供了有力支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值