第一个Hello world(1)

简介:

把新创建的空项目中的HelloworldScene类删除掉,自己写一个.

一步步学习,不能投机取巧,先从最简单的hello world开始!

#ifndef __HelloCpp__LoadingLayer__
#define __HelloCpp__LoadingLayer__

#include "cocos2d.h"

/** @brief 游戏启动层类
 *
 *  游戏启动会创建此类对象,通过工厂方法创建一个场景,并将自己(层)加入到场景中
 */
class LoadingLayer : public cocos2d::CCLayer
{
public:
    // 初始化函数
    virtual bool init();
    
    // 工厂方法,生成场景对象
    static cocos2d::CCScene * scene();
    
    // 关闭菜单的回调
    void menuCloseCallback(CCObject *pSender);
    
    // 静态创建类对象
    static LoadingLayer * create();
};

#endif /* defined(__HelloCpp__LoadingLayer__) */

#include "LoadingLayer.h"

USING_NS_CC;

CCScene * LoadingLayer::scene()
{
    // 使用工厂方法生成scene
    CCScene *pScene = CCScene::create();
    
    // 使用工厂方法生成启动层对象
    LoadingLayer *pLayer = LoadingLayer::create();
    
    // 把启动层对象加入到场景中
    pScene->addChild(pLayer);
    
    return pScene;
}

bool LoadingLayer::init()
{
    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(LoadingLayer::menuCloseCallback));
    // 设置菜单项在屏幕的位置
    pCloseItem->setPosition(ccp(origin.x + visibleSize.width - pCloseItem->getContentSize().width / 2,
                                origin.y + pCloseItem->getContentSize().height / 2));
    
    // 创建菜单并添加到层中
    CCMenu *pMenu = CCMenu::create(pCloseItem, NULL);
    pMenu->setPosition(CCPointZero);
    this->addChild(pMenu, 1);
    
    // 创建标题
    CCLabelTTF *pLabel = CCLabelTTF::create("Hello World", "Arial", 24);
    pLabel->setPosition(ccp(origin.x + visibleSize.width / 2,
                            origin.y + visibleSize.height / 2));
    this->addChild(pLabel, 1);
    
    // 添加精灵
    CCSprite *pSprite = CCSprite::create("HelloWorld.png");
    pSprite->setPosition(ccp(visibleSize.width / 2 + origin.x,
                             visibleSize.height / 2 + origin.y));
    this->addChild(pSprite, 0);
    
    return true;
}

LoadingLayer * LoadingLayer::create()
{
    LoadingLayer *pRet = new LoadingLayer();
    if (pRet && pRet->init()) {
        pRet->autorelease();
        return pRet;
    }
    
    delete pRet;
    pRet = NULL;
    
    return NULL;
}

void LoadingLayer::menuCloseCallback(cocos2d::CCObject *pSender)
{
    CCDirector::sharedDirector()->end();
#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
    exit(0);
#endif
    return;
}


目录
相关文章
|
人工智能 算法 数据挖掘
【技术揭秘】解锁声纹技术中的说话人日志
说话人日志(speaker diarization)也叫说话人分离,它是从一个连续的多人说话的语音中切分出不同说话人的片段,并且判断出每个片段是哪个说话人的过程。借助说话人日志技术可以完成对音频数据流的结构化管理,具有广泛的应用价值,例如可以利用分离结果进行说话人自适应,以提高语音识别的准确率;可以辅助会议、电话数据进行自动转写构建说话人的音频档案;也可以利用说话人分离技术,实现语料库的自动跟踪和标注。
【技术揭秘】解锁声纹技术中的说话人日志
|
vr&ar C# 图形学
WPF与AR/VR的激情碰撞:解锁Windows Presentation Foundation应用新维度,探索增强现实与虚拟现实技术在现代UI设计中的无限可能与实战应用详解
【8月更文挑战第31天】增强现实(AR)与虚拟现实(VR)技术正迅速改变生活和工作方式,在游戏、教育及工业等领域展现出广泛应用前景。本文探讨如何在Windows Presentation Foundation(WPF)环境中实现AR/VR功能,通过具体示例代码展示整合过程。尽管WPF本身不直接支持AR/VR,但借助第三方库如Unity、Vuforia或OpenVR,可实现沉浸式体验。例如,通过Unity和Vuforia在WPF中创建AR应用,或利用OpenVR在WPF中集成VR功能,从而提升用户体验并拓展应用功能边界。
402 1
|
API Windows
[原创]MASM32新手指南
[原创]MASM32新手指南
|
安全 量子技术 数据安全/隐私保护
量子通信技术的原理与进展
【8月更文挑战第1天】量子通信技术以其独特的优势和巨大的潜力在科技领域掀起了一场革命性的变革。随着研究的深入和技术的成熟,量子通信技术将在未来发挥更加重要的作用,为信息安全、量子计算、量子传感等领域提供强有力的支持。我们有理由相信,在不久的将来,量子通信将以其卓越的性能和广泛的应用前景,为我们带来更加安全、高效、便捷的通信体验。
1300 9
|
机器学习/深度学习 人工智能 运维
运维自动化:提升效率与减少错误的必由之路
【8月更文挑战第19天】在信息技术快速发展的今天,企业对运维工作的要求越来越高。运维自动化作为一种先进的管理手段,不仅可以显著提高运维效率,还能有效降低人为错误,保障系统稳定运行。本文将深入探讨运维自动化的必要性、实施步骤及面临的挑战,旨在为读者提供一条清晰的运维自动化实施路径。
171 1
|
安全 物联网 区块链
未来交织:新兴技术的融合趋势与应用革新
【5月更文挑战第25天】 随着科技的迅猛发展,新兴技术如区块链、物联网(IoT)、虚拟现实(VR)等正不断突破传统边界,形成交互式的创新生态。本文将深入探讨这些技术的发展趋势,并分析它们在不同应用场景中的融合与创新。区块链技术以其不可篡改和去中心化的特性,正在金融、供应链管理等领域展现其潜力。物联网通过智能设备互联,为智慧城市、智能家居等带来革命性变化。而虚拟现实技术则在娱乐、教育甚至医疗领域开辟了新的体验方式。这些技术的交叉应用不仅推动了行业的进步,也为我们的生活带来了前所未有的便利和体验。
|
物联网 API 语音技术
Python 物联网入门指南(五)(3)
Python 物联网入门指南(五)
129 2
|
开发者 iOS开发
苹果证书分类及作用详解,助力开发者高效管理应用程序
本文将详细介绍苹果证书的作用及分类,包括企业证书、开发者证书、 推送证书、分发证书和MDM证书,帮助开发者了解如何正确使用和管理这些证书, 提升应用程序的开发和发布效率。
|
消息中间件 SQL 存储
阿里云实时计算 Flink 版 x Hologres: 构建企业级一站式实时数仓
阿里云 Flink、阿里云 Hologres 构建实时数仓上所具备的核心能力以及二者结合的最佳解决方案。
阿里云实时计算 Flink 版 x Hologres: 构建企业级一站式实时数仓