Cocos2dx创建精灵的5中方法

来源:互联网 发布:美工图片大全 编辑:程序博客网 时间:2024/06/02 07:31

之前做游戏写代码习惯了一种方式,就不想再尝试其它的方法了,遇到新的问题,觉得旧的方法还是可以解决的,就没有动力去找更好的方法,比如创建精灵,一直以来习惯了第一种、第三种、第四种方法,其它的很少尝试,今天在网上搜索资料,发现很多大神总结的非常好,我先拿来,放到这里,已方便自己以后查阅;

原文地址(不确定是否第一地址)

http://www.myexception.cn/operating-system/1468071.html

http://www.cocos2dev.com/?p=331

cocos2dx创建精灵的五种方法(包括使用图片名获取图片);

还是闲来无事,白白继续给大家分享经验,文笔不好还请见谅!

废话少说,直接上代码:

// 创建精灵的五种方法

//方法一:直接创建精灵   
//适合于要显示的是这张图片的全部区域,CCSprite * sprite = CCSprite::create("Icon.png");//上面那句话也可以根据需要这样来写://CCString* fileName = CCString::createWithFormat("Icon_%d.jpg", flag);//CCSprite* sprite = CCSprite::create(fileName->getCString());sprite->setPosition(ccp(100, 100));this->addChild(sprite);

// 方法二:参数 图片名称 矩形区域

//适合于需要显示此图片的部分区域CCSprite * sprite = CCSprite::create("Icon.png",CCRectMake(0, 0, 30, 30));sprite->setPosition(ccp(100, 100));this->addChild(sprite);
方法三: 利用帧缓存中的一帧的名称声称一个对象

CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("test_icon.plist");CCSprite * sprite = CCSprite::createWithSpriteFrameName("Icon.png");sprite->setPosition(ccp(100, 100));this->addChild(sprite);
//方法四: 利用另外一帧生成一个精灵对象  
//适合于做帧动画使用CCSpriteFrame * frame = CCSpriteFrame::create("Icon.png", CCRectMake(0, 0, 40, 30));CCSprite * sprite = CCSprite::createWithSpriteFrame(frame);sprite->setPosition(ccp(310, 150));addChild(sprite);

//方法五:利用纹理,
//适合于需要频繁使用的图片CCSpriteBatchNode* spriteTexture = CCSpriteBatchNode::create("iocn.png");spriteTexture->setPosition(CCPointZero);addChild(spriteTexture);CCSprite* sprite = CCSprite::createWithTexture(spriteTexture->getTexture());sprite->setPosition(ccp(visiblesize.width/2, 100));spriteTexture->addChild(sprite, 2);

纹理用得不多,大多数时候直接用UI出得图片资源创建精灵;

其实,很多时候如果技术足够强大,就能在给定的条件下(比如ui资源)做出更多的效果图片,当然也可以为app节省一些资源,手游在这方面显得尤为重要,用最小的ui资源做出最多得效果,这样,app安装包就可以尽可能的压缩;

在cocos2d-x中,我们创建一个menuitem(CCMenuItemImage...)需要三个图片资源,我们来看一下创建一个CCMenuItemImage的接口:

static CCMenuItemImage* create(const char *normalImage, const char *selectedImage, const char *disabledImage);

在这里分别需要三个图片资源:正常状态、选中状态、禁用状态;我们之前的项目中,最低需求两个(因为没有禁用状态),往往是需要三个图片资源,这无疑增大了游戏的大小;其实,禁用状态的通用模式都是美工将正常状态的图片灰化而已,这用程序就可以实现,不需要另外一个图片,详情请看:点击打开链接;(创建高亮状态的精灵点击打开链接);

关于第5中方法,我之前在游戏中用的也少,主要用在创建背包格子的背景图片上,在此贴出:

在cocos2d-x 2.x 之后,大家都看到了左下角的FPS变成3行,多了两行数据。
最上面一行是指的当前场景的渲染批次(简单理解为需要渲染多少个贴图出来);
中间一行是渲染每一帧需要的时间;
最下行就是大家熟悉的FPS。

这样,我们就由优化程序的方向,针对第一点,请参考:点击打开链接

针对精灵的优化可以参考这篇文章:点击打开链接

0 0
原创粉丝点击