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

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));

2、文字LabelTTF的创建方式

(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);

好了,这篇简介了游戏中常常要用到的对象的创建方式,对于游戏中的其它元素。能够參考游戏源代码的demo中的创建方式,这个demo值得好好研究学习。

下一篇介绍下游戏中的设计模式——托付模式

时间: 2024-10-16 23:53:40

cocos2d-x 3.0 经常使用对象的创建方式的相关文章

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(file

高屋建瓴 cocos2d-x-3.0架构设计 Cocos2d (v.3.0) rendering pipeline roadmap(原文)

Cocos2d (v.3.0) rendering pipeline roadmap Why (the vision) The way currently Cocos2d does rendering is good but it is beginning to feel somehow antiquate and moreover it doesn't actually leverage modern multi core CPUs so popular nowadays on most mo

解决virtualbox5.0.26 总是提示“”创建com 对象失败“”

virtualbox5.0.26 总是提示"创建com 对象失败" 创建失败(被召者 RC: REGDB_E_CLASSNOTREG (0x80040154)) 在网找了,使用以下方法: 1) Open a standard command line (not as administrator) 2) "cd X:\Program Files\VirtualBox" 3) VBoxSVC /ReRegServer 4) regsvr32 VBoxC.dll 也没有解

cocos2dx2.0 与cocos2dx3.1 创建线程不同方式总结

虽然内容是抄过来的,但是经过了我的验证,而且放在一起就清楚很多了,cocos2dx版本经常变化很大,总会导致这样那样的问题. cocos2dx2.0 中 1. 头文件 #include <pthread.h> ... pthread_t serial_thread_id; // 起这个名字本打算用在socket上的 int serialThreadStart(void);// 启动线程的方法 static void* serialReceiverFun(void *arg);// 被启动的线程

Android(Lollipop/5.0) Material Design(四) 创建列表和卡片

Material Design系列 Android(Lollipop/5.0)Material Design(一) 简单介绍 Android(Lollipop/5.0)Material Design(二) 入门指南 Android(Lollipop/5.0)Material Design(三) 使用Material主题 Android(Lollipop/5.0)Material Design(四) 创建列表和卡片 Android(Lollipop/5.0)Material Design(五) 定

(转)ASP.NET Mvc 2.0 - 1. Areas的创建与执行

转自:http://www.cnblogs.com/terrysun/archive/2010/04/13/1711218.html ASP.NET Mvc 2.0 - 1. Areas的创建与执行 Areas是ASP.NET Mvc 2.0版本中引入的众多新特性之一,它可以帮你把一个较大型的Web项目分成若干组成部分,即Area.实现Area的功能可以有两个组织形式: 在1个ASP.NET Mvc 2.0 Project中创建Areas. 创建多个ASP.NET Mvc 2.0 Project

在java中使用solr7.2.0 新旧版本创建SolrClient对比

在Java中使用solr 版本7.2.0 solrj已经更新到了7.2.0,新版本solr获取SolrClient的方式也和之前旧版本有所不同 solr6.5开始不推荐直接使用HttpSolrClient的构造方法创建SolrClient(6.5之前版本的创建方式在页末) 从7.0.0开始删除了HttpSolrClient创建客户端的构造方法,使用内部类Builder构建SolrClient 安装solr:https://my.oschina.net/u/2931319/blog/1595303

RDD之三:RDD创建方式

RDD创建方式 1)从Hadoop文件系统(如HDFS.Hive.HBase)输入创建.2)从父RDD转换得到新RDD.3)通过parallelize或makeRDD将单机数据创建为分布式RDD. 4)基于DB(Mysql).NoSQL(HBase).S3(SC3).数据流创建. 从集合创建RDD parallelize def parallelize[T](seq: Seq[T], numSlices: Int = defaultParallelism)(implicit arg0: Clas

JAVA学习第二十三课(多线程(二))- (多线程的创建方式二 :实现Runnable接口(常用))

当一个类有父亲,但是其中的功能还希望实现线程,那么就不能采用继承Thread的方式创建线程 那么就可以通过接口的方式完成 准备扩展Demo类的功能,让其中的内容可以作为线程的任务执行 实现Runnable接口,Runnable接口中只有一个方法run 一.创建线程的第二种方法 Runnable的出现仅仅是将线程的任务进行了对象的封装 /* * 创建线程的第二种方法 * 1.定义类实现Runnable接口 * 2.覆盖接口中的fun方法,将线程的任务代码封装到run方法中 * 3.通过Thread