Cocos2D-x精灵的简单实现和函数调用基本流程

首先我们创建一个项目,然后咱们在做一些程序测试。


第一步 创建我们自己的类,其基类为CCLayer

#ifndef __MyScene_H__
#define __MyScene_H__
#include "cocos2d.h"
USING_NS_CC;

class MyScene : public CCLayer
{
public:
	//需要我们手动实现
	bool init();
	//需要我们手动实现
	static CCScene* scene();
	//这时一个宏,真正的函数是create(),在该函数中会调用init()函数
	CREATE_FUNC(MyScene);
};
#endif
首先我们实现scene函数,然后实现init函数

#include "MyScene.h"


//创建scene
CCScene* MyScene::scene() {
	CCScene * scene = CCScene::create();
	MyScene* layer = MyScene::create();//此处调用该宏创建MyScene*对象,并调用init函数
	scene->addChild(layer);
	return scene;
}
//主要
bool MyScene::init() {
//调用父类的init()函数
	if (!CCLayer::init())
	{
		return false;
	}
//通过文件路径创建精灵
	//CCSprite* sprite = CCSprite::create("exp01.jpg");
// 通过纹理创建精灵,纹理通过纹理缓存加载,可以达到节约内存的目的
	CCTexture2D* texture = CCTextureCache::sharedTextureCache()->addImage("exp01.jpg");
	//CCSprite* sprite = CCSprite::createWithTexture(texture);
	//CCSprite* sprite = CCSprite::createWithTexture(texture, CCRect(272, 274, 474, 200));

// 通过精灵帧来创建精灵,精灵帧的引入为了减少内存边角料的浪费情况,
//意思就是我们一次加载一大张图片然后我们剪裁一小部分进行显示
	CCSpriteFrame* spriteFrame = CCSpriteFrame::createWithTexture(texture, CCRect(272, 274, 474, 200));
	//CCSprite* sprite = CCSprite::createWithSpriteFrame(spriteFrame);

// 通过精灵帧缓存里缓存的精灵帧来创建精灵
	//CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFrame(spriteFrame, "mySpriteFrame");
	//CCSprite* sprite = CCSprite::createWithSpriteFrameName("mySpriteFrame");

//通过创建空的精灵,在后期添加
	CCSprite* sprite = CCSprite::create();
	//sprite->setDisplayFrame(spriteFrame);

	sprite->setTexture(texture);
	sprite->setTextureRect(CCRect(272, 274, 474, 200));

	this->addChild(sprite);
	sprite->setPosition(ccp(200,200));
	return true;
}

那么我们如何让框架调用我们写的自定义类呢,那么还得从scene函数考虑:

bool AppDelegate::applicationDidFinishLaunching() {
    // initialize director
    CCDirector* pDirector = CCDirector::sharedDirector();
    CCEGLView* pEGLView = CCEGLView::sharedOpenGLView();

    pDirector->setOpenGLView(pEGLView);
	
    // turn on display FPS
    pDirector->setDisplayStats(true);

    // set FPS. the default value is 1.0/60 if you don't call this
    pDirector->setAnimationInterval(1.0 / 60);

    // create a scene. it's an autorelease object
	
    CCScene *pScene = MyScene::scene();/在这里调用我们的自定义类的静态函数

    // run
    pDirector->runWithScene(pScene);

    return true;
}


好了我想你也应该明白程序的大概流程了吧,可能你看着还简单,没什么用,但是我们不能一口吃个胖子,慢慢来,逐步提高。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值