cocos2dx 的Hello world的简单分析

cocos2dx 的Hello world的简单分析

Node之间的关系:

cocos2dx 的Hello world的简单分析

场景AppDelegate.cpp又要由导演去调用然后进行表演:

    // create a scene. it's an autorelease object
    auto scene = HelloWorld::createScene();

    // run
    director->runWithScene(scene);

这里层里面的场景HelloWorldScene.cpp里面的内容:

#include "HelloWorldScene.h"

USING_NS_CC;

Scene* HelloWorld::createScene()
{
    // 'scene' is an autorelease object
    auto scene = Scene::create();
    
    // 'layer' is an autorelease object
    auto layer = HelloWorld::create();

    // add layer as a child to scene
    scene->addChild(layer);

    // return the scene
    return scene;
}

// on "init" you need to initialize your instance
bool HelloWorld::init()
{
    //
    // 1. super init first
    if ( !Layer::init() )
    {
        return false;
    }
    
    Size visibleSize = Director::getInstance()->getVisibleSize();
    Vec2 origin = Director::getInstance()->getVisibleOrigin();

    /////
    // 2. add a menu item with "X" image, which is clicked to quit the program
    //    you may modify it.
    //每一个addChild会创建出一个添加的层
    // add a "close" icon to exit the progress. it's an autorelease object
    auto closeItem = MenuItemImage::create(
                                           "CloseNormal.png",
                                           "CloseSelected.png",
                                           CC_CALLBACK_1(HelloWorld::menuCloseCallback, this));
    
    closeItem->setPosition(Vec2(origin.x + visibleSize.width - closeItem->getContentSize().width/2 ,
                                origin.y + closeItem->getContentSize().height/2));

    // create menu, it's an autorelease object
    auto menu = Menu::create(closeItem, NULL);
    menu->setPosition(Vec2::ZERO);
    this->addChild(menu, 1);

    /////
    // 3. add your codes below...

    // add a label shows "Hello World"
    // create and initialize a label
    
    auto label = Label::createWithTTF("Hello sunzhiyan", "fonts/arial.ttf", 24);
    
    // position the label on the center of the screen
    label->setPosition(Vec2(origin.x + visibleSize.width/2,
                            origin.y + visibleSize.height - label->getContentSize().height));

    // add the label as a child to this layer
    this->addChild(label, 1);

    auto label1= Label::createWithTTF("88888888888888", "fonts/arial.ttf", 40);

    // position the label on the center of the screen
    label1->setPosition(Vec2(origin.x + visibleSize.width / 3,
        origin.y + visibleSize.height - label1->getContentSize().height));

    // add the label as a child to this layer
    this->addChild(label1, 1);

    //创建一个精灵
    auto sprite = Sprite::create("sun.jpg");

    //设置精灵的显示位置
    sprite->setPosition(Vec2(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y));

    // 将精灵添加到层里面
    this->addChild(sprite, 0);
    
    return true;
}


void HelloWorld::menuCloseCallback(Ref* pSender)
{
    Director::getInstance()->end();

#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
    exit(0);
#endif
}

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/109300.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Jquery 400报错

    Jquery 400报错问题:前端能够完整传递数据,后台不能相应的接收到所有的数据解决思路:1,前端传送的数据格式和后端接收的数据格式不一一对应,400报错2,修改前端界面的name属性,name的属性与后台的接收字段名称,3,如果使用实体接收数据的话,未接收到数据,则是数据类型的问题,传递过来的数据默认是String类型的数据,但是实体中有integer或者timestamp格式4,如果使用参数集合接收数据,…

    2022年6月7日
    36
  • .net断点续传的原理

    在了解HTTP断点续传的原理之前,先来说说HTTP协议,HTTP协议是一种基于tcp的简单协议,分为请求和回复两种。请求协议是由客户机(浏览器)向服务器(WEBSERVER)提交请求时发送报文的协议

    2021年12月26日
    41
  • java源程序文件扩展名_JAVA源代码的扩展名为( )

    java源程序文件扩展名_JAVA源代码的扩展名为( )展开全部JAVA源代码的扩展名为.java。Java源程序(.java文件)-java字节码文e68a8462616964757a686964616f31333433626462件(.class文件)-由解释执行器(java.exe)将字节码文件加载到java虚拟机(jvm)-字节码文件(.class)就会在java虚拟机中执行。Java的基本包java.lang其中包含有:接口:Compara…

    2022年7月8日
    49
  • 手机一键装windows系统_git could not create work tree

    手机一键装windows系统_git could not create work treeGit简介Git是目前世界上最先进的分布式版本控制系统。可以简单理解为一种管理的工具,通过git可以将github上的代码拉到本地或者把电脑里的代码push到github。Windows环境下Git的下载与安装地址:https://git-scm.com/download这里选择64位的下载完成后,双击即可进入安装界面选择自己想要安装的位置,默认C盘,这里选择了D盘一些组件:(这里选择在桌面上创建git的图标Additionalicons–OntheDesktop,其他的默认即

    2022年8月25日
    7
  • 2019年腾讯PHP工程师面试题「建议收藏」

    2019年腾讯PHP工程师面试题

    2022年2月10日
    49
  • activation code激活码【2021.10最新】「建议收藏」

    (activation code激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月29日
    79

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号