cocos2d-x 3.0 常用对象的创建方式

cocos2d-x 3.0 中所有对象几乎都可以用create函数来创建,其他的创建方式也是有create函数衍生。

下面来介绍下create函数创建一般对象的方法,省得开发中经常忘记啥的。

1、精灵Sprite的4种创建方式

(1)根据图片资源路径来创建

?
1
2
3
4
//根据图片路径来创建
auto sprite1 = Sprite::create(filepath);
//根据图片路径来创建,并设置要显示的图片大小
auto sprite2 = Sprite::create(filepath,Rect( 0 , (2)根据plist文件中的frame name创建,图片名称前要加#符号来区分

2
//参数:帧名字,frame name
auto sprite = Sprite::create( '#ball.png' );
(3)根据缓存plist中的sprite frame来创建,这种用的比较多
3
SpriteFrameCache::getInstance()->addSpriteFramesWithFile( "loadingAndHP.plist" "loadingAndHP.png" ); //加载图片资源作为缓存
//从缓存图片中根据图片名字来创建
auto loading_bk=Sprite::createWithSpriteFrameName( "loading_bk.png" );
(4)根据纹理texture创建
4
5
6
//根据纹理图片来创建
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,height));


2、文字LabelTTF的创建方式

(1)根据字体、大小等多参数创建

auto center = LabelTTF::create( "hello cocos2d-x" //要显示字符串
"Paint Boy" //字体
32 //字号
Size(s.width/ 2 200 ),0)!important">//显示的宽和高
TextHAlignment::CENTER,0)!important">//显示的位置,定位
TextVAlignment::TOP);
(2)根据自定义对象FontDefinition来创建
6
7
8
9
10
11
12
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 = ;
shadowTextDef._fontFillColor = tintColorRed;
// shadow only label
auto fontShadow = LabelTTF::createWithFontDefinition( "Shadow Only Red Text" //根据自定义的字体创建要显示的内容


3、对于3.0中SpriteBatchNode,不鼓励使用,文档看这里点击打开链接,在此不再赘述SpriteBatchNode的用法。

4、帧动画创建方式

通过多张图片文件来创建一个动画,

9
Animation* animation = Animation::create();
animation->setDelayPerUnit( / fps);
for ( int i = ; 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 ] = { };
( ; i < ; i++)
{
sprintf(str,monospace!important; font-size:1em!important; min-height:inherit!important; color:blue!important">"grossini_dance_%02d.png" SpriteFrame* frame = cache->spriteFrameByName( str );
animFrames->addObject(frame);
}
Animation* animation = Animation::createWithSpriteFrames(animFrames,monospace!important; font-size:1em!important; min-height:inherit!important">.3f);

好了,这篇简单介绍了游戏中经常要用到的对象的创建方式,对于游戏中的其他元素,可以参考游戏 源码的demo中的创建方式,这个demo值得好好研究学习。

相关文章

    本文实践自 RayWenderlich、Ali Hafizji 的文章《...
Cocos-code-ide使用入门学习地点:杭州滨江邮箱:appdevzw@1...
第一次開始用手游引擎挺激动!!!进入正题。下载资源1:从C...
    Cocos2d-x是一款强大的基于OpenGLES的跨平台游戏开发...
1.  来源 QuickV3sample项目中的2048样例游戏,以及最近《...
   Cocos2d-x3.x已经支持使用CMake来进行构建了,这里尝试...