• cocos2dx HelloWorld 代码一撇


        本节简单对新生成的hellowrold 项目相关代码进行简单分析,具体以代码注释的方式展示给大家。代码相对简单些,在此不作过多赘述,直接上码:

    int APIENTRY _tWinMain(HINSTANCE hInstance,
                           HINSTANCE hPrevInstance,
                           LPTSTR    lpCmdLine,
                           int       nCmdShow)
    {
        // UNREFERENCED_PARAMETER 避免编译器关于未引用参数的警告
        UNREFERENCED_PARAMETER(hPrevInstance);
        UNREFERENCED_PARAMETER(lpCmdLine);
        
        //新建一个代理实体
        AppDelegate app;
        CCEGLView* eglView = CCEGLView::sharedOpenGLView();
    
        // 初始化win32下游戏窗体大小及标题等信息
        eglView->setViewName(UTEXT("这是一个测试啦"));
        eglView->setFrameSize(900, 600);
    
        return CCApplication::sharedApplication()->run();
    }
     
     
     
    bool AppDelegate::applicationDidFinishLaunching() 
    {
        //加载配置文件信息,用于防止中文乱码及国际化
        CCConfiguration::sharedConfiguration()->loadConfigFile("config/strings.plist");
    
        // 初始化导演雷
        CCDirector* pDirector = CCDirector::sharedDirector();
        CCEGLView* pEGLView = CCEGLView::sharedOpenGLView();
    
        pDirector->setOpenGLView(pEGLView);
        
        // 设置是否限制帧频
        pDirector->setDisplayStats(true);
    
        // 设置刷新频率,默认为 1.0 / 60
        pDirector->setAnimationInterval(1.0 / 60);
    
        // 创建启动场景
        CCScene *pScene = StartScene::scene();
    
        // run
        pDirector->runWithScene(pScene);
    
        return true;
    }
     
    CCScene* StartScene::scene()
    {
        //  创建一个场景
        CCScene *scene = CCScene::create();
        
        StartScene *layer = StartScene::create();
    
        // 设置子节点,以后你会碰到很多addChild
        scene->addChild(layer);
    
        // return the scene
        return scene;
    }
    
    bool StartScene::init()
    {
        // 初始化layer
        if ( !CCLayer::init() )
        {
            return false;
        }
        
        CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize();
        CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin();
    
        // 创建程序退出按钮,注意点击事件回调函数的注册方法
        CCMenuItemImage *pCloseItem = CCMenuItemImage::create("CloseNormal.png", "CloseSelected.png",this, menu_selector(StartScene::menuCloseCallback));
        pCloseItem->setPosition(ccp(origin.x + visibleSize.width - pCloseItem->getContentSize().width/2 - 20, origin.y + visibleSize.height - pCloseItem->getContentSize().height/2 - 20));
    
        CCMenu* pMenu = CCMenu::create(pCloseItem, NULL);
        pMenu->setPosition(CCPointZero);
        this->addChild(pMenu, 1);
        
        // 创建一个文本标签
        CCConfiguration *conf = CCConfiguration::sharedConfiguration();
        const char *helloStr = conf->getCString("hello", "unknown");
            
        CCLabelTTF* pLabel = CCLabelTTF::create(helloStr, "Arial", 24);    
        pLabel->setPosition(ccp(origin.x + visibleSize.width/2, origin.y + visibleSize.height - pLabel->getContentSize().height));
        this->addChild(pLabel, 1);
    
        // 生成背景图片,此处使用sprite
        CCSprite* pSprite = CCSprite::create("HelloWorld.png");
        pSprite->setPosition(ccp(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y));
        this->addChild(pSprite, 0);
    
        // this->setRotation(90.0F);
        
        return true;
    }
    
    // 点击退出按钮回调函数
    void StartScene::menuCloseCallback(CCObject* pSender)
    {
        CCDirector::sharedDirector()->end();
    
    #if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
        exit(0);
    #endif
    
    }
  • 相关阅读:
    路由器只要能连接上,就能得到密码,
    jmeter上传文件搞了一天,才搞定,没高人帮忙效率就是低,赶紧记下来,以备后用
    1关0不关
    AJAX学习
    建表原则
    设计模式——代理模式
    jdk动态代理机制
    ArrayList源码分析
    Java集合类:HashMap (基于JDK1.8)
    SpringMVC的数据转换、格式化和数据校验
  • 原文地址:https://www.cnblogs.com/sunguangran/p/3223086.html
Copyright © 2020-2023  润新知