cocos2d-x 3.0 中所有对象几乎都可以用create函数来创建,其他的创建方式也是有create函数衍生。
下面来介绍下create函数创建一般对象的方法,省得开发中经常忘记啥的。
1、精灵Sprite的4种创建方式
(1)根据图片资源路径来创建
//根据图片路径来创建 auto sprite1 = Sprite::create(filepath); //根据图片路径来创建,并设置要显示的图片大小 auto sprite2 = Sprite::create(filepath,Rect(0,0,width,height));
(2)根据plist文件中的frame name创建,图片名称前要加#符号来区分
//参数:帧名字,frame name auto sprite = Sprite::create('#ball.png');(3)根据缓存plist中的sprite frame来创建,这种用的比较多
SpriteFrameCache::getInstance()->addSpriteFramesWithFile("loadingAndHP.plist","loadingAndHP.png");//加载图片资源作为缓存 //从缓存图片中根据图片名字来创建 auto loading_bk=Sprite::createWithSpriteFrameName("loading_bk.png");(4)根据纹理texture创建
//根据纹理图片来创建 auto batch = SpriteBatchNode::create("Images/grossini_dance_atlas.png", 1);//加载缓存纹理 //根据纹理来创建精灵 auto sprite = Sprite::createWithTexture(batch->getTexture()); //根据纹理来创建精灵,并设置显示区域大小 auto sprite = Sprite::createWithTexture(batch->getTexture(), Rect(x, y, width, height));
(1)根据字体、大小等多参数创建
auto center = LabelTTF::create("hello cocos2d-x",//要显示字符串 "Paint Boy",//字体 32,//字号 Size(s.width/2,200),//显示的宽和高 TextHAlignment::CENTER,//显示的位置,定位 TextVAlignment::TOP);(2)根据自定义对象FontDefinition来创建
FontDefinition shadowTextDef; shadowTextDef._fontSize = 20;//字号 shadowTextDef._fontName = std::string("Marker Felt");//字体 shadowTextDef._shadow._shadowEnabled = true;//设置是否有阴影 shadowTextDef._shadow._shadowOffset = shadowOffset; shadowTextDef._shadow._shadowOpacity = 1.0;//设置透明度 shadowTextDef._shadow._shadowBlur = 1.0; shadowTextDef._fontFillColor = tintColorRed; // shadow only label auto fontShadow = LabelTTF::createWithFontDefinition("Shadow Only Red Text", shadowTextDef);//根据自定义的字体创建要显示的内容
3、对于3.0中SpriteBatchNode,不鼓励使用,文档看这里点击打开链接,在此不再赘述SpriteBatchNode的用法。
4、帧动画创建方式
通过多张图片文件来创建一个动画,
Animation* animation = Animation::create(); animation->setDelayPerUnit(1.0 / fps); for (int i = 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);//加载.plist文件到缓存中 AnimationCache* cache = AnimationCache::getInstance()->addAnimationsWithFile(filename);//根据动画.plist文件来创建动画缓存 Animation* animation = cache->animationByName(filename);//直接从缓存中创建动画 Animate* animate = Animate::create(animation);//生成动画动作
(2)通过数组来创建
Array* animFrames = Array::createWithCapacity(15); char str[100] = {0}; for(int i = 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);
下一篇介绍下游戏中的设计模式——委托模式
cocos2d-x 3.0 常用对象的创建方式,布布扣,bubuko.com
原文地址:http://blog.csdn.net/hust_superman/article/details/38168329