cocos2dx设置精灵大小中 node 跟精灵有什么区别

6313人阅读
cocos2d-x(93)
转自:/operating-system/1468071.html
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);
//方法三: 利用帧缓存中的一帧的名称声称一个对象
// 适合于plist打包好的文件
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);
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:3723006次
积分:29724
积分:29724
排名:第139名
原创:20篇
转载:1008篇
评论:405条
(4)(13)(10)(3)(2)(1)(4)(5)(10)(1)(7)(13)(6)(4)(3)(9)(10)(3)(13)(6)(22)(14)(13)(19)(26)(50)(9)(12)(13)(47)(22)(31)(29)(18)(26)(12)(6)(23)(5)(12)(4)(10)(12)(79)(44)(86)(12)(9)(7)(21)(6)(10)(14)(23)(30)(4)(1)(3)(5)(3)(9)(2)(16)(3)(17)(5)(5)(8)(2)(3)(3)(20)(10)(14)(3)Cocos2dx 关于node中加入精灵的有关问题 - 游戏开发当前位置:& &&&Cocos2dx 关于node中加入精灵的有关问题Cocos2dx 关于node中加入精灵的有关问题&&网友分享于:&&浏览:0次Cocos2dx 关于node中加入精灵的问题自定义一个类继承自node,然后在该node中加入一个精灵,设置node的大小和精灵相同,也就是说精灵的中点和node的中点重合的,&那么精灵在跳起过程中,他们的中点还重合吗,如果要进行碰撞检测的话,直接用自定义node&的getboundingbox吗,精灵在跳起过程中,自定义node的大小是不是变大了&------解决思路----------------------1.如果是对精灵执行跳起动作,那精灵的坐标就改变了,不再重合;
2.碰撞检测看具体情况,如果是以精灵作为表现的,并且精灵执行了动作,那就用精灵的boundingBox。如果node和精灵一直都是重合的,就可以使用node的boundingBox;
3.不管精灵怎么变,node的自身状态都不会改变,精灵只不过是作为node的一个子节点,不会影响到node(嗯,没有这么智能就是了)
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 1234567891011 Copyright & &&版权所有5401人阅读
cocos2dx_3.x(22)
Sprite 和 SpriteBatchNode
v2.2 2.2版本中推荐的优化游戏方式是将&SpriteBatchNode&对象设置为&Sprite&对象的父节点。
虽然使用&SpriteBatchNode&对象仍然是一个非常好的优化游戏的方式,但是它仍然有一定的限制:
Sprite&对象的孩子只能是&Sprite&(否则,Cocos2d-x
会触发断言)
当&Sprite&的父节点是&SpriteBactchNode&时,不能添加&ParticleSystem&作为&Sprite的子节点。这将导致当&Sprite&的父节点是&SpriteBatchNode&时,不能使用&ParallaxNode
所有的&Sprite&对象必须共享相同的纹理ID (否则,Cocos2d-x 会触发断言)Sprite&对象使用&SpriteBatchNode&的混合函数和着色器。
虽然 v3.0 仍然支持&SpriteBatchNode&(与之前的版本拥有相同的特效和限制),但是我们不鼓励使用它。相反,我们推荐直接使用&Sprite,不需要再它作为子节点添加到&SpriteBatchNode&中。
但是,为了能让 v3.0 有更好的表现,你必须要确保你的&Sprite&对象满足以下条件:
贡献相同的纹理ID(把它们放在一个spritesheet中,就像使用&SpriteBatchNode&一样)确保它们使用相同的着色器和混合函数(就像使用&SpriteBatchNode&一样)
如果这么做,&Sprites&将会像使用&SpriteBatchNode&一样的快...(在旧设备上大概慢了10%,在新设备上基本上察觉不出)
v2.2 和 v3.0 最大的区别在于:
Sprite&对象可以有不同的纹理ID。Sprite&对象可以有不同种类的&Node&作为子节点,包括&ParticleSystem。Sprite&对象可以有不同的混合函数和不同的着色器。
但是如果你这么做,渲染器&可能无法对它所有的子节点进行批处理(性能较低)。但是游戏仍然可以正常运行,不会触发任何断言。
保持将所有的精灵放在一张大的 spritesheet 中。使用相同的混合函数(使用默认)使用相同的着色器(使用默认)不要将精灵添加到&SpriteBatchNode
只有当你需要一些额外的性能上提升(虽然很小),SpriteBatchNode&才会是你最后的选择(你需要对它的限制条件很熟悉)。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:444662次
积分:3628
积分:3628
排名:第7192名
原创:70篇
评论:54条
(1)(1)(1)(2)(1)(3)(1)(5)(2)(4)(5)(13)(1)(1)(5)(1)(2)(17)(6)(1)西西软件下载最安全的下载网站、值得信赖的软件下载站!
→ COCOS2D中对精灵的操作、对图片的各种操作
类型:文件处理大小:7.4M语言:中文 评分:6.6
于精灵的各种操作,总结一下以便以后复习查找。内容简要:1、初始化 2、创建无图的精灵 3、设置精灵贴图大小 &4、添加入层中5、对精灵进行缩放 &6、对精灵款或高进行缩放 &7、旋转精灵8、设置精灵透明度 &9、精灵的镜像反转 &10、设置精灵的颜色11、得到图的宽高 & 12、按照像素设定图片大小 &13、在原有的基础上加xy的坐标14、设置图片锚点 & &15、从新排列z轴顺序 & 16、更换精灵贴图17、设置可视区域 18、贴图无锯齿//初始化CCSprite* sprite =[CCSprite spriteWithFile:@&Icon.png&];&//创建无图的精灵CCSprite*sprite2 =[CCSprite node];//设置精灵贴图大小sprite2.textureRect=CGRectMake(0, 0, 20, 20);//设置其为宽20,高20.//添加入层中[self addChild:sprite&z:2]; //将精灵加入层中设置其z轴为2//对精灵进行缩放sprite.scale=2;//放大2倍//对精灵款或高进行缩放sprite.scaleX = 2;//宽放大2倍&sprite.scaleY = 2;//高放大2倍//旋转精灵sprite.rotation=90;//旋转90度//设置精灵透明度sprite.opacity=255;//设置透明度为完全不透明(范围0~255)//定义精灵位置sprite.position=ccp(100,100);//设置精灵中心点坐标是x=100,y=100//精灵的镜像反转[sprite setFlipX:YES];//X轴镜像反转[sprite setFlipY:YES];//Y轴镜像反转//设置精灵的颜色[sprite setColor:ccc3(255, 0, 0)];//设置颜色为红色//得到图的宽高float &contentSize&&=&sprite&.contentSize.width //得到图片的宽高//按照像素设定图片大小sprite.scaleX=(20)/contentS //按照像素定制图片宽高//在原有的基础上加xy的坐标sprite.position = ccpAdd(sprite.position,ccp(20,20));//在原有坐标的基础上加减坐标//设置图片锚点[sprite&setAnchorPoint:ccp(0.5,0.5)&];//设置图片的锚点//从新排列z轴顺序[self reorderChild:sprite z:1];//从新排列z轴顺序//更换精灵贴图CCTexture2D * =[[CCTextureCache sharedTextureCache] addImage: @&test.png&];//新建贴图[sprite&setTexture:test];&//更换精灵贴图,加载帧缓存,这个test.plist保存了fram这张图[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@&test.plist&];CCSpriteFrame* frame = [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:@&fram.png&];[sprite2 setDisplayFrame:frame];//设置可视区域CCSprite * sprite3 =[CCSprite spriteWithFile:@&icon.png& rect:CGRectMake(0, 0, 20,20)];//创建时设置[sprite3 setTextureRect:CGRectMake(10, 10, 30, 30)];//创建后设置//贴图无锯齿[sprite3&.texture setAliasTexParameters];
06-0410-1905-1101-2201-2201-2201-2201-2101-1701-13
阅读本文后您有什么感想? 已有23人给出评价!
名称大小下载

我要回帖

更多关于 cocos2dx获取精灵大小 的文章

 

随机推荐