第一个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;
}
时间: 2024-12-31 01:54:24

第一个Hello world(1)的相关文章

自己动手做一个SQL解释器

自己动手做一个SQL解释器在一些小型的应用中,完全没有必要使用大型数据库软件.自己做一个SQL解释器就能用数据库的方式来管理了.这个解释器,能解释常用的SQL命令.你可以自行添加其他功能. <?phpclass DB_text {  var $conn;  var $classname = "db_text";  var $database;  function on_create() {  }  function connect($database_name) {    $th

PS 15分钟快速绘制一个快播图标

  今天的教程@无梦不欢001 教大家绘制一个精美的快播图标,教程不难,主要是图层样式的运用,熟练的话15分钟就可以搞定.源文件已附上方便学习,来收! 分类: PS入门教程 ps图标制作教程

PS绘制一个太空中发光的行星教程

photoshop教程中我将为大家介绍如何轻松地使用photoshop中的云彩滤镜和扭曲滤镜制作一颗炫酷的行星.最终效果如图所示 1.创建一个新图片,大小为940*700,背景填充黑色,新建一个图层,使用套索工具(羽化50px)绘制一个椭圆选区,然后执行"滤镜-渲染-云彩",如图所示 2.按下Ctrl+L打开色阶调整框,应用下图所示的设置. 3.执行"滤镜-扭曲-旋转扭曲",如图所示 photoshop教程 4.设置角度为999,如图所示 分类: PS入门教程

PS制作一个超酷的气功冲击波效果教程

photoshop教程主要为大家介绍使用photoshop的烟幕笔刷制作一个气势磅礴的气功波.制作过程比较复杂,主要是烟雾形状的调整和虎头的烟雾效果调整,要按照虎头的形状变形烟雾. 最终效果 1.在Photoshop中创建一个新文件.我使用的屏幕分辨率为1920 × 1200,用灰色(#b8b8b8)填充画布. 2.创建一个新层,填充黑色.确保前景色和背景色分别为白色和黑色,去滤镜>渲染>云. 我的目标是把这些云彩变成漂亮的线性效果.因此去滤镜>模糊>动感模糊,距离999px,角度

注册表 应用程序路径-注册表操作:通过注册表来获取到一个应用程序的安装路径~!~!~!~!~!~!~!~!~!

问题描述 注册表操作:通过注册表来获取到一个应用程序的安装路径~!~!~!~!~!~!~!~!~! 10C C币快没有了,希望大神看到不要嫌弃赏金!!!!!!不吝赐教.... 解决方案 HKEY_LOCAL_MACHINEsoftwaremicrosoftwindowscurrentversionuninstall软件名,如果有,一般在这个里面 解决方案二: 你能找到某个软件的注册表 逐个点开 后面 '数据'那一列里面会有路径显示 解决方案三: 一个操作注册表的类 解决方案四: 操作?还是程序控

sql2008-求一个C# SQL做的旅游信息管理系统,不要网页的那种。

问题描述 求一个C# SQL做的旅游信息管理系统,不要网页的那种. 实现简单的景点查询,添加 删除:景点的介绍,修改,以及 管理员及用户个人信息的注册等. 解决方案 http://download.csdn.net/detail/vaeigffsgdfgfdfs/5646183 解决方案二: http://download.csdn.net/detail/wangyindiwyd/3621599 解决方案三: http://download.csdn.net/download/u01049142

分享一个HP EVA4400/6400/8400/P6000通用的数据恢复方法

[引言] 本文档建立在针对HP EVA的大量测试性研究基础上,所有的细节几乎均为对EVA的破译型研究,目前全球范围内尚未发现类似资料,故可能表述方式和结论并不精确,仅为参考之用. 我们公司为研究HP EVA系列算法,花费了大量的人力物力,目前应为全国唯一的研究此项技术的公司,转载请注明来源. [前因] HP EVA4400/6400/8400因接近退役,已进入高故障区间,用户往往会认为花费几十万甚至上百万购买的eva系列应该是非常稳定的,但实际上无论多么昂贵的存储设备,使用的磁盘是相同或相似的.

sql-数据库视图里要创建一个计算的字段,如何避免被除数为零

问题描述 数据库视图里要创建一个计算的字段,如何避免被除数为零 数据库视图里要创建一个字段,是个除法,但被除数可能为零,我按照网上讲的CASE WHEN方法改了之后,总提示我表达式无效或缺少,我贴出来我的代码 ROUND(CASE WHEN V_RECOMMAND_CANDIDATE.vote_total > 0 THEN ((CAST(RECOMMAND_CANDIDATE_1.vote_agree AS FLOAT) / V_RECOMMAND_CANDIDATE.vote_total *

一个类如何实现两个接口中同名同参数不同返回值的函数

假设有如下两个接口: public interface IA{    string GetA(string a);}public interface IB{    int GetA(string a);} 他们都要求实现方法GetA,而且传入的参数都是一样的String类型,只是返回值一个是String一个是Int,现在我们要声明一个类X,这个类要同时实现这两个接口: public class X:IA,IB 由于接口中要求的方法的方法名和参数是一样的,所以不可能通过重载的方式来解决,那么我们该

ASP中一个字符串处理类(VBScript)

vbscript|字符串 这个类是用于处理字符串的,是老外写的,我把里面的功能和参数加了说明 使用方法: =============== test.asp================ <!--#include file="StringOperations.asp"--> <%dim strset str = New StringOperations test = str.toCharArray("check this out") respons