Cocos2d-x 3.x游戏开发之旅读书笔记(2)

一、绘制顺序

1globalZOrder

跨节点的控制绘制顺序,最强力的控制

2localZOrder

针对某个节点的子节点的绘制顺序

3orderOfArrival

localZOrder值相同时控制绘制顺序

 

globalZOrder>localZOrder>orderOfArrival

 

二、Auto-batching(把连续相同的精灵一起绘制)

连续的且具有相同材质ID(相同纹理,相同混合函数,相同shader)的节点才能满足Auto-batching的要求

 

三、SpriteBatchNode

 


 

四、纹理

                     autosprite1 = Sprite::create("xiaoruo.png");

autosprite2 = Sprite::createWithSpriteFrame(

SpriteFrame::create("xiaoruo.png",Rect(0, 0, 100, 50)));//截取一部分图片作为纹理

 

sprite1->setPosition(Point(50,100));

sprite2->setPosition(Point(150,100));

 

this->addChild(sprite1);

this->addChild(sprite2);

 

Texture2D* t1 =sprite1->getTexture();//同一张图片的纹理是相同的,可以符合Auto-batching条件

Texture2D*t2 = sprite2->getTexture();

五、使用TexturePacker把不同图片打包到一起,生成.plist文件和.png文件加入资源文件夹

//将图片加载到精灵帧缓存池

SpriteFrameCache*frameCache = SpriteFrameCache::getInstance();

frameCache->addSpriteFramesWithFile("girls.plist","girls.png");

 

Sprite*sp2 = Sprite::createWithSpriteFrameName("sprite2.png");

sp2->setPosition(Point(100,200));

this->addChild(sp2);

 

Sprite*sp1 = Sprite::createWithSpriteFrameName("sprite1.png");

sp1->setPosition(Point(250,200));

this->addChild(sp1);

 

六、动画

//将图片加载到精灵帧缓存池

SpriteFrameCache*frameCache = SpriteFrameCache::getInstance();

frameCache->addSpriteFramesWithFile("boys.plist","boys.png");

 

autosFrame = frameCache->getSpriteFrameByName("run1.png");

autosprite = Sprite::createWithSpriteFrame(sFrame);

sprite->setPosition(Point(100,100));

this->addChild(sprite);

 

constint iNum = 15;

SpriteFrame*spriteFrame=NULL;

Vector<SpriteFrame*>vec;

 

for(int i = 1; i <= iNum; i++)

{

spriteFrame=frameCache->getSpriteFrameByName(StringUtils::format("run%d.png",i));

vec.pushBack(spriteFrame);

}

 

Animation* animation =Animation::createWithSpriteFrames(vec);//动画

animation->setLoops(-1);//设置为循环动作

animation->setDelayPerUnit(0.1f);//每一周图片间隔时间

 

Animate* animate =Animate::create(animation);//动作

 

sprite->runAction(animate);

 

七、游戏实例《跑跑跑》

这个要记录比较麻烦,有很多个类,而且不按照一步一步实现而是直接看代码价值不大,要看代码可以在原书作者博客上查看。

然后想记录一下在写的过程中遇到的小麻烦:

1、报错:error C2628: “SimpleMoveController”后面接“bool”是非法的(是否忘记了“;”?)

这是因为在类的最后没有写“;”

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值