cocos2d-x 3.0 中所有对象几乎都可以用create函数来创建,其他的创建方式也是有create函数衍生。
下面来介绍下create函数创建一般对象的方法,省得开发中经常忘记啥的。
1、精灵Sprite的4种创建方式
(1)根据图片资源路径来创建
-
- autosprite1=Sprite::create(filepath);
- //根据图片路径来创建,并设置要显示的图片大小
- autosprite2=Sprite::create(filepath,Rect(0,width,height));
(2)根据plist文件中的frame name创建,图片名称前要加#符号来区分
//参数:帧名字,framename
- autosprite=Sprite::create('#ball.png');
(3)根据缓存plist中的sprite frame来创建,这种用的比较多
SpriteFrameCache::getInstance()->addSpriteFramesWithFile("loadingAndHP.plist","loadingAndHP.png");
-
- autoloading_bk=Sprite::createWithSpriteFrameName("loading_bk.png");
(4)根据纹理texture创建
//根据纹理图片来创建
- autobatch=SpriteBatchNode::create("Images/grossini_dance_atlas.png",1);
- //根据纹理来创建精灵
- autosprite=Sprite::createWithTexture(batch->getTexture());
- //根据纹理来创建精灵,并设置显示区域大小
- autosprite=Sprite::createWithTexture(batch->getTexture(),Rect(x,y,51); font-family:Arial; font-size:14px; line-height:26px">
2、文字LabelTTF的创建方式
(1)根据字体、大小等多参数创建
autocenter=LabelTTF::create("hellococos2d-x",
- "PaintBoy",0); background-color:inherit">//字体
- 32,
- Size(s.width/2,200),0); background-color:inherit">//显示的宽和高
- TextHAlignment::CENTER,0); background-color:inherit">//显示的位置,定位
- TextVAlignment::TOP);
(2)根据自定义对象FontDefinition来创建
FontDefinitionshadowTextDef;
- shadowTextDef._fontSize=20;
- shadowTextDef._fontName=std::string("MarkerFelt");
-
- shadowTextDef._shadow._shadowEnabled=true;
- shadowTextDef._shadow._shadowOffset=shadowOffset;
- shadowTextDef._shadow._shadowOpacity=1.0;
- shadowTextDef._shadow._shadowBlur=1.0;
- shadowTextDef._fontFillColor=tintColorRed;
- //shadowonlylabel
- autofontShadow=LabelTTF::createWithFontDefinition("ShadowOnlyRedText",shadowTextDef);
3、对于3.0中SpriteBatchNode,不鼓励使用,文档看这里点击打开链接,在此不再赘述SpriteBatchNode的用法。
4、帧动画创建方式,通过多张图片文件来创建一个动画
Animation*animation=Animation::create();
- animation->setDelayPerUnit(1.0/fps);
- for(inti=0;i<=count;i++){
- const
char*filename=String::createWithFormat(fmt,i)->getCString();
SpriteFrame*frame=SpriteFrameCache::getInstance()->spriteFrameByName(
filename);
animation->addSpriteFrame(frame);
}
Animation是由Sprite frame帧组、单个frame延时,持续时间等组成的,它是一组“数据”,而Animate是一个Action,它是基于Animation对象创建的。
5、序列帧动画Sprite sheet animation
(1)通过.plist文件来创建
SpriteFrameCache::getInstance()->addSpriteFramesWithFile(filename);
- AnimationCache*cache=AnimationCache::getInstance()->addAnimationsWithFile(filename);
- Animation*animation=cache->animationByName(filename);
- Animate*animate=Animate::create(animation);
(2)通过数组来创建
Array*animFrames=Array::createWithCapacity(15);
- charstr[100]={0};
- inti=1;i<15;i++)
- {
- sprintf(str,"grossini_dance_%02d.png",i);
- SpriteFrame*frame=cache->spriteFrameByName(str);
- animFrames->addObject(frame);
- }
- Animation*animation=Animation::createWithSpriteFrames(animFrames,0.3f);
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|