CCSprite的创建方法

本文介绍了Cocos2d-x中创建精灵对象的五种方法,包括直接创建、带大小限制的创建、通过纹理创建、使用精灵批处理类创建及利用缓存帧创建。这些方法有助于开发者根据不同需求灵活选择合适的创建方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CCSprite-精灵对象的创建方法有以下几种:

第一种方法比较直接,直接用CCSprite::create方法:

        CCSprite* sp1 = CCSprite::create("Icon.png");
	sp1->setPosition(ccp(winSize.width*0.2, winSize.height*0.2));
	sp1->autorelease();
第二种方法是在第一种方法上加一个大小限制:

	CCSprite* sp4 = CCSprite::create("Icon.png", CCRect(0, 0, 30, 30));
	sp4->setPosition(ccp(winSize.width * 0.6, winSize.height * 0.2));
	this->addChild(sp4, 2);

CCRect(0, 0, 30, 30)就是限制了精灵的大小,在位置(0,0)大小为(30,30)

第三种方法是用纹理绘制的:

	CCTexture2D* tt2d = CCTextureCache::sharedTextureCache()->addImage("Icon.png");
	CCSprite* sp2 = CCSprite::createWithTexture(tt2d);
	sp2->setPosition(ccp(winSize.width * 0.4, winSize.height * 0.2));
	this->addChild(sp2, 2);</span>
tt2d就是一个2D纹理,然后调用CCSprite::createWithTexture方法就可以创建一个精灵

第四种方法是精灵批处理类CCSpriteBatchNode进行创建,如果要对一个精灵进行多次使用的可以使用这种方法,只进行一次准备、一次渲染、一次清理:

	CCSpriteBatchNode* bn1 = CCSpriteBatchNode::create("Icon.png", 50);
	this->addChild(bn1, 3, 2);

	CCSprite* sp_n1 = CCSprite::createWithTexture(bn1->getTexture(), CCRect(15, 23, 25, 25));
	sp_n1->setPosition(ccp(winSize.width * 0.2, winSize.height * 0.8));
	bn1->addChild(sp_n1,1,1);

	CCSprite* sp_n2 = CCSprite::createWithTexture(bn1->getTexture(), CCRect(15, 24, 25, 25));
	sp_n2->setPosition(ccp(winSize.width * 0.4, winSize.height * 0.8));
	bn1->addChild(sp_n2,1,2);

CCSpriteBatchNode::create("Icon.png", 50); 第1个参数是贴图路径,第2个参数是使用次数

在调用精灵集合中的某一个精灵时可以这样调用,其中tag_id是这个精灵在精灵集合里的编号(tag):

void HelloWorld::zorderF1(CCSpriteBatchNode* b1, int tag_id)
{
	CCSprite* sp = (CCSprite*)b1->getChildByTag(tag_id);
	sp->setSkewX(20.0f);
}

其他的就类似第三种方法了

第五种方法使用缓存帧,就是把所用到的数据保存在.plist文件里,用的时候把整个文件加载进来:

	CCSpriteFrameCache* ca = CCSpriteFrameCache::sharedSpriteFrameCache();
	ca->addSpriteFramesWithFile("grossini.plist");
	CCSprite* sp_ca1 = CCSprite::createWithSpriteFrameName("grossini_dance_01.png");
	sp_ca1->setPosition(ccp(winSize.width * 0.6, winSize.height * 0.4));

	char ss[100] = {0};
	sprintf(ss, "grossini_dance_%02d.png", 1);
	CCSpriteFrame* sf = ca->spriteFrameByName(ss);
	sp_ca1->setDisplayFrame(sf);
	this->addChild(sp_ca1);
我也是刚刚学习cocos2d-x,还是新手,还请看到这篇的大牛批评指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值