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
,
0
,width,height));

(2)根据plist文件中的frame name创建,图片名称前要加#符号来区分

?


1

2


//参数:帧名字,frame name

auto sprite = Sprite::create(
‘#ball.png‘
);

(3)根据缓存plist中的sprite frame来创建,这种用的比较多

?


1

2

3


SpriteFrameCache::getInstance()->addSpriteFramesWithFile(
"loadingAndHP.plist"
,
"loadingAndHP.png"
);
//加载图片资源作为缓存 

//从缓存图片中根据图片名字来创建

auto loading_bk=Sprite::createWithSpriteFrameName(
"loading_bk.png"
);

(4)根据纹理texture创建

?


1

2

3

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, width, height));


2、文字LabelTTF的创建方式

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

?


1

2

3

4

5

6


auto center = LabelTTF::create(
"hello cocos2d-x"
,
//要显示字符串

                                
"Paint Boy"
,
//字体

                                 
32
,
//字号

                                 
Size(s.width/
2
,
200
),
//显示的宽和高

                                 
TextHAlignment::CENTER,
//显示的位置,定位

                                 
TextVAlignment::TOP);

(2)根据自定义对象FontDefinition来创建

?


1

2

3

4

5

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    =
1.0
;

shadowTextDef._fontFillColor   = tintColorRed;

// shadow only label

auto fontShadow = LabelTTF::createWithFontDefinition(
"Shadow Only Red Text"
, shadowTextDef);
//根据自定义的字体创建要显示的内容

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

4、帧动画创建方式

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

?


1

2

3

4

5

6

7

8

9


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文件来创建

?


1

2

3

4


SpriteFrameCache::getInstance()->addSpriteFramesWithFile(filename);
//加载.plist文件到缓存中

AnimationCache* cache = AnimationCache::getInstance()->addAnimationsWithFile(filename);
//根据动画.plist文件来创建动画缓存

Animation* animation = cache->animationByName(filename);
//直接从缓存中创建动画

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

(2)通过数组来创建

?


1

2

3

4

5

6

7

8

9


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值得好好研究学习。

cocos2d-x 3.0 常用对象的创建方式,布布扣,bubuko.com

时间: 2024-10-07 06:10:26

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

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

js对象的创建方式

js对象的创建方式: js也具有OOP编程思想,了解js对象,可以进一步了解js是如何面向对象编程的. js的创建对象方式: 1.   Object var a=new Object();a.name="jack";a.age=20;a.sayName=function () { console.log(this.name);} a.sayName();//打印jack 2.  字面量 var b={name:"rose",age:20,sayName:functi

js 对象的创建方式和对象的区别

js一个有三种方法创建对象,这里做一个总结. 1.对象直接量 所谓对象直接量,可以看做是一副映射表,这个方法也是最直接的一个方法,个人比较建议, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 //创建简单对象 var obj1 = {}; //空对象 var obj2 = {   name: "ys",   age: 12 }; //创建复杂对象 var obj3 = {   name: "ys",   age

openGL常用对象的创建及使用

一.GPU英文全称Graphic Processing Unit,中文翻译为"图形处理器".GPU(显卡核心芯片)是显示卡的"大脑",它决定了该显卡的档次和大部分性能 二.使用背景 随着OpenGL状态和固定管线模式的移除,我们不在用任何glEnable函数调用,而且也不会有glVertex.glColor等函数调用.这就意味着我们需要一种新的方式来将数据传输到图形卡以渲染图形. 三.顶点数组对象(Vertex Array Object,VAO) 1.背景 每当我们

由php的单例模式到php对象的创建方式

最近去面试,遇到一个单例模式的问题,学到一些以前没想到的东西,虽然面试失败,不过还是不错的哦.给大家分享下.php是以进程的方式运行的,我们忽略多线程的问题,不用给属性加锁.常用的单例模式类.单例模式运行的场景,有时我们可能在一个进程里面某一个类只有一个实例运行.常用的单例模式是这么写的.class SingleClass{ private static $instance = null; //构造方法 private function __construct(){ echo " new obj

字符串类的定义和字符串类对象的创建方式

String为字符串类. 其定义如下: public final class String 可以看出,String类是final类型的,是不可继承的.从源代码还可以看出,String从本质上说就是一个char类型的数组. 字符串类对象的声明有两种方式. 第一种,使用new关键字创建. String 变量名=new String("值"); 第二种,直接声明并初始化. String 变量名="值"; 我更喜欢第一种,标准的,所有类的对象的声明都通过  new 类的构造

SpringIOC_对象的创建方式

Spring创建对象的几种方式 默认的构造 静态工厂 实例工厂 一 :默认构造方法创建对象     1.applicationContext.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLS

Java 对象的创建过程

类的初始化与实例化一个 Java 对象的创建过程往往包括类的初始化 和 实例化 两个阶段.Java 规范规定一个对象在可以被使用之前必须要被正确地初始化.在类初始化过程中或初始化完毕后,根据具体情况才会去对类进行实例化.在实例化一个对象时,JVM 首先会检查相关类型是否已经加载并初始化,如果没有,则 JVM 立即进行加载并调用类构造器完成类的初始化.Java 对象的创建方式一个对象在可以被使用之前必须要被正确地实例化.在 Java 程序中,有多种方法可以创建对象,最直接的一种就是使用 new 关

奇葩的对象创建方式(更新中)

1.日志对象的创建方式 public static final Logger  log =Logger.getLogger(需要产生日志文件的class对象); 2.httpClient对象的创建方式 CloseableHttpClient httpclient = HttpClients.createDefault(); 3.获取一个Http返回的对象 CloseableHttpResponse response = httpClient.execute(get);