Cocos2D-X SimpleGame 如何添加一个cocos2d-x精灵 (1) ----版本cocos2d-2.0-x-2.0.3

走走转转还是走回了cocos2d-x,好把,大家一起加油把,新手大家别见怪了!!

 

希望大家多多指教

 

1、 在上添加资源在win32上添加资源

2、让我们一起看bool HelloWorld::init()这个函数把,其实跟1.0差不多,就是把用来定义的

CCMenuItemImage::itemFromNormalImage(...)  改为 CCMenuItemImage::create(...)

CCSprite::spriteWithFile(...)  改为CCSprite::create(...)

// on "init" you need to initialize your instance
bool HelloWorld::init()
{
    bool bRet = false;
    do 
    {

		CC_BREAK_IF(! CCLayerColor::initWithColor(ccc4(0,255,255,255)));


		//add CCMenuItemImage
        CCMenuItemImage *pCloseItem = CCMenuItemImage::create(
            "CloseNormal.png",
            "CloseSelected.png",
            this,
            menu_selector(HelloWorld::menuCloseCallback));
        CC_BREAK_IF(! pCloseItem);
        pCloseItem->setPosition(ccp(CCDirector::sharedDirector()->getWinSize().width - 20, 20));

		//add CCMenu
        CCMenu* pMenu = CCMenu::create(pCloseItem, NULL);
        pMenu->setPosition(CCPointZero);
        CC_BREAK_IF(! pMenu);
        this->addChild(pMenu, 1);

		//加入主角
		CCSize winSize = CCDirector::sharedDirector()->getWinSize();

		CCSprite* player = CCSprite::create("Player.png",CCRectMake(0,0,27,40));
		player->setPosition(ccp(player->getContentSize().width/2, winSize.height/2));
		this->addChild(player);

        bRet = true;
    } while (0);

    return bRet;
}

 

要点1

1. 不要使用C++里的__super来替代objc里的super。关键字__super仅能在VC++中被识别,但是无法被GCC给编译。因此你最好调用其父类名称,CCLayer::init()

2. 这里没有属性的概念。因此在objc里的属性,我们用get/set方法来代替。例如,如果你想要获取CCSprite的contentSize属性,你必须调用sprite->getContentSize()方法。contentSize的第一个字母应该为大写的“C”,之后为它加上“get”前缀。

3. 使用setter来设置属性的值,“player.position=…”,应变为player->setPosition(…)

4. 但是访问结构体的成员不遵循这一规则。例如,在winSize结构体中,没有“width”&“height”的getter/setter

5. 你不需要像objc那样,解释每一个参数的用途。例如CCSprite::create(…, ….);

6. 我们已经完成了一些常用的CGGeometry函数,诸如CGRectMake, CGPointMake, CGSizeMake, CGPointZero, CGSizeZero, CGRectZero。你可以在cocos2dx/include/CCGemoetry.h中找到它们。它们的用途和iOS一样。仅有一点点不同在于它们的前缀,为了避免命名上的冲突,在cocos2d-x里,前缀为CG、NS、UI的类都统一改成了CC前缀。

7. 所有cocos2d-x里的游戏元素,例如sprite、layer、scene、label、action都在heap里被分配了内存。因此我们必须用指针“->”来调用它们的方法。

8. 在cpp里,用关键字“this”来代替objc里的“self”

9. 现在init方法的返回值是“bool”类型了。在cpp里没有关键字“id”,因此那些返回值为“id”的方法要么替换成对象的指针,要么换成bool。

10. 对于Android,由于标题栏占用了一些空间,因此你需要在cpp里这样设置玩家的位置(player.contenSize.width/2 + 40, winSize.height/2)。

好了,我们可以编译并运行代码了。现在忍者一袭黑衣,躲在黑暗中闪着红眼。要玩游戏的话,我们必须把背景改成白色的。这非常简单,修改HelloWorld,使它继承CCLayerColor,而不是CCLayer。

 

首先,修改HelloWorldScene.h的声明部分

// cpp with cocos2d-x

class HelloWorld : public cocos2d::CCLayerColor

 

要点2

1. 在c++里继承默认为private继承,因此需要在CCLayerColor类声明前加上“public”。

2. Cocos2d-iphone的主要作者RicardoQuesada建议我们在cocos2d-x中使用命名空间。检查你所调用的cocos2d-x类是在“cocos2d”命名空间还是在“CocosDenshion”命名空间是非常重要的。

编译并运行,之后你就会看到小英雄孤单地站在白色的背景里。

 Cocos2D-X SimpleGame 如何添加一个cocos2d-x精灵 (1) ----版本cocos2d-2.0-x-2.0.3_第1张图片

 

希望大家共进步!!

你可能感兴趣的:(Cocos2D-X SimpleGame 如何添加一个cocos2d-x精灵 (1) ----版本cocos2d-2.0-x-2.0.3)