实例:使用纹理对象创建Sprite对象
2014-05-16 18:25
387 查看
精灵类是Sprite,它的类图如下图所示:
Sprite类直接继承了Node类,具有Node基本特征。此外,我们还可以看到Sprite类的派生类有:PhysicsSprite和Skin。PhysicsSprite是物理引擎精灵类,Skin是皮肤精灵类用于骨骼动画。使用纹理Texture2D对象创建Sprite对象是使用createWithTexture函数实现的。我们会通过一个实例介绍纹理对象创建Sprite对象使用,这个实例如下面第一张图所示,其中地面上的草是放在背景中的,场景中的两棵树是从“树”纹理图片中截取出来的,最后一张图所示的是树的纹理坐标,注意它的坐标原点在左上角。
创建Sprite对象实例
场景背景图片
“树”纹理图片
树”纹理图片
HelloWorldScene.cpp实现的init函数代码如下:
在上面代码第①行Sprite::create("background.png")通过background.png图片创建精灵,第②行代码是设置背景的锚点。
第③行代码Sprite::create("tree1.png",Rect(604, 38, 302, 295))通过tree1.png图片和矩形裁剪区域创建精灵,矩形裁剪区域为(604, 38, 302,295)。
Rect类可以创建矩形裁剪区,Rect构造函数如下:
Rect (float x, float y, float width,float height)其中x,y是UI坐标,坐标原点在左上角,width是裁剪矩形的宽度,height是裁剪矩形的高度。
第④行代码通过纹理缓存TextureCache创建纹理Texture2D对象,TextureCache::getInstance()是采用单例设计模式,通过getInstance()函数可以获得TextureCache实例,TextureCache 的addImage("tree1.png")函数可以创建纹理Texture2D对象,其中的tree1.png是纹理图片名。
第⑤行代码创建一个空的Sprite对象,所以还要通过的后面的很多函数设置它的属性,其中第⑥行代码tree2->setTexture(cache)是设置纹理。第⑦行代码tree2->setTextureRect(Rect(73, 72,182,270))是设置纹理的裁剪区域。
更多内容请关注Cocos2d-x系列图书《Cocos2d-x实战(卷Ⅰ):C++开发》本书交流讨论网站:http://www.cocoagame.net欢迎加入cocos2d-x技术讨论群:257760386、327403678
Sprite类直接继承了Node类,具有Node基本特征。此外,我们还可以看到Sprite类的派生类有:PhysicsSprite和Skin。PhysicsSprite是物理引擎精灵类,Skin是皮肤精灵类用于骨骼动画。使用纹理Texture2D对象创建Sprite对象是使用createWithTexture函数实现的。我们会通过一个实例介绍纹理对象创建Sprite对象使用,这个实例如下面第一张图所示,其中地面上的草是放在背景中的,场景中的两棵树是从“树”纹理图片中截取出来的,最后一张图所示的是树的纹理坐标,注意它的坐标原点在左上角。
创建Sprite对象实例
场景背景图片
“树”纹理图片
树”纹理图片
HelloWorldScene.cpp实现的init函数代码如下:
bool HelloWorld::init() { if ( !Layer::init() ) { return false; } Size visibleSize = Director::getInstance()->getVisibleSize(); Point origin = Director::getInstance()->getVisibleOrigin(); autobackground = Sprite::create("background.png"); ① background->setAnchorPoint(Point::ZERO); ② this->addChild(background,0); auto tree1 = Sprite::create("tree1.png",Rect(604, 38, 302,295)); ③ tree1->setPosition(Point(200,230)); this->addChild(tree1,0); Texture2D* cache = TextureCache::getInstance()->addImage("tree1.png"); ④ auto tree2 = Sprite::create(); ⑤ tree2->setTexture(cache); ⑥ tree2->setTextureRect(Rect(73, 72,182,270)); ⑦ tree2->setPosition(Point(500,200)); this->addChild(tree2,0); return true; }
在上面代码第①行Sprite::create("background.png")通过background.png图片创建精灵,第②行代码是设置背景的锚点。
第③行代码Sprite::create("tree1.png",Rect(604, 38, 302, 295))通过tree1.png图片和矩形裁剪区域创建精灵,矩形裁剪区域为(604, 38, 302,295)。
Rect类可以创建矩形裁剪区,Rect构造函数如下:
Rect (float x, float y, float width,float height)其中x,y是UI坐标,坐标原点在左上角,width是裁剪矩形的宽度,height是裁剪矩形的高度。
第④行代码通过纹理缓存TextureCache创建纹理Texture2D对象,TextureCache::getInstance()是采用单例设计模式,通过getInstance()函数可以获得TextureCache实例,TextureCache 的addImage("tree1.png")函数可以创建纹理Texture2D对象,其中的tree1.png是纹理图片名。
第⑤行代码创建一个空的Sprite对象,所以还要通过的后面的很多函数设置它的属性,其中第⑥行代码tree2->setTexture(cache)是设置纹理。第⑦行代码tree2->setTextureRect(Rect(73, 72,182,270))是设置纹理的裁剪区域。
更多内容请关注Cocos2d-x系列图书《Cocos2d-x实战(卷Ⅰ):C++开发》本书交流讨论网站:http://www.cocoagame.net欢迎加入cocos2d-x技术讨论群:257760386、327403678
相关文章推荐
- 实例:Cocos2d-js中使用纹理对象创建Sprite对象
- 实例:Cocos2d-js中使用纹理对象创建Sprite对象
- 实例:使用纹理对象创建Sprite对象
- Cocos2d-js中使用纹理对象创建Sprite对象
- GSON使用笔记(2) -- 反序列化时GSON如何创建对象实例
- scala不使用new关键字创建对象实例
- scala不使用new关键字创建对象实例
- java 程序加载过程---3--类中申明同时申明类的静态对象 创建类的实例 访问类的静态变量 调用类的静态方法 使用反射方法 初始化类的子类对象 直接使用java.exe 调用某个类
- SignalR代理对象异常:Uncaught TypeError: Cannot read property 'client' of undefined 推出的结论 SignalR 简单示例 通过三个DEMO学会SignalR的三种实现方式 SignalR推送框架两个项目永久连接通讯使用 SignalR 集线器简单实例2 用SignalR创建实时永久长连接异步网络应用程序
- 《JavaScript设计模式与开发实践》——JavaScript中使用new关键字创建对象实例
- Java之对象的创建和使用的一个实例分析
- 使用反射机制创建对象实例
- GSON使用笔记(2) -- 反序列化时GSON如何创建对象实例
- 抽象工厂模式:简单工厂模式、工厂方法模式对比;在工厂方法模式中使用反射创建对象实例
- 实例讲解.NET中资源文件的创建与使用
- Quartz不能直接使用已有对象实例的解决办法
- 利用反射技术创建只包含私有无参构造函数的对象实例
- 实例讲解.NET中资源文件的创建与使用
- Quartz不能直接使用已有对象实例的解决办法
- Asp.net中对象使用的实例