欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

实例:使用纹理对象创建Sprite对象 博客分类: cocos2d-x移动开发,cocos2d cocos2d-x移动开发cocos2d 

程序员文章站 2024-02-28 16:14:34
...

精灵类是Sprite,它的类图如下图所示:

实例:使用纹理对象创建Sprite对象
            
    
    博客分类: cocos2d-x移动开发,cocos2d cocos2d-x移动开发cocos2d 

 

Sprite类直接继承了Node类,具有Node基本特征。此外,我们还可以看到Sprite类的派生类有:PhysicsSprite和Skin。PhysicsSprite是物理引擎精灵类,Skin是皮肤精灵类用于骨骼动画。

使用纹理Texture2D对象创建Sprite对象是使用createWithTexture函数实现的。我们会通过一个实例介绍纹理对象创建Sprite对象使用,这个实例如下面第一张图所示,其中地面上的草是放在背景中的,场景中的两棵树是从“树”纹理图片中截取出来的,最后一张图所示的是树的纹理坐标,注意它的坐标原点在左上角。

                                                  创建Sprite对象实例

实例:使用纹理对象创建Sprite对象
            
    
    博客分类: cocos2d-x移动开发,cocos2d cocos2d-x移动开发cocos2d 

场景背景图片

实例:使用纹理对象创建Sprite对象
            
    
    博客分类: cocos2d-x移动开发,cocos2d cocos2d-x移动开发cocos2d 

 “树”纹理图片

实例:使用纹理对象创建Sprite对象
            
    
    博客分类: cocos2d-x移动开发,cocos2d cocos2d-x移动开发cocos2d  

 

树”纹理图片

实例:使用纹理对象创建Sprite对象
            
    
    博客分类: cocos2d-x移动开发,cocos2d cocos2d-x移动开发cocos2d 

 

HelloWorldScene.cpp实现的init函数代码如下:

 

[html] view plaincopy实例:使用纹理对象创建Sprite对象
            
    
    博客分类: cocos2d-x移动开发,cocos2d cocos2d-x移动开发cocos2d 实例:使用纹理对象创建Sprite对象
            
    
    博客分类: cocos2d-x移动开发,cocos2d cocos2d-x移动开发cocos2d 
 
  1. bool HelloWorld::init()  
  2. {  
  3.    if ( !Layer::init() )  
  4.    {  
  5.        return false;  
  6.    }  
  7.      
  8.    Size visibleSize = Director::getInstance()->getVisibleSize();  
  9.    Point origin = Director::getInstance()->getVisibleOrigin();  
  10.    
  11.         autobackground = Sprite::create("background.png");                                                              ①  
  12.         background->setAnchorPoint(Point::ZERO);                                                                   ②  
  13.    this->addChild(background,0);  
  14.      
  15.    auto tree1 = Sprite::create("tree1.png",Rect(604, 38, 302,295));                                       ③  
  16.    tree1->setPosition(Point(200,230));                                                                                      
  17.    this->addChild(tree1,0);  
  18.      
  19.    Texture2D* cache = TextureCache::getInstance()->addImage("tree1.png");                   ④  
  20.    auto tree2 = Sprite::create();                                                                                                 ⑤  
  21.    tree2->setTexture(cache);                                                                                                     ⑥  
  22.    tree2->setTextureRect(Rect(73, 72,182,270));                                                                     ⑦  
  23.    tree2->setPosition(Point(500,200));                                                                                      
  24.    this->addChild(tree2,0);  
  25.    
  26.    return true;  
  27. }  

 

 

在上面代码第①行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))是设置纹理的裁剪区域。

 

更多内容请关注最新Cocos图书《Cocos2d-x实战 C++卷》

本书交流讨论网站:http://www.cocoagame.net

更多精彩视频课程请关注智捷课堂Cocos课程:http://v.51work6.com
欢迎加入Cocos2d-x技术讨论群:257760386


《Cocos2d-x实战 C++卷》现已上线,各大商店均已开售:

京东:http://item.jd.com/11584534.html

亚马逊:http://www.amazon.cn/Cocos2d-x%E5%AE%9E%E6%88%98-C-%E5%8D%B7-%E5%85%B3%E4%B8%9C%E5%8D%87/dp/B00PTYWTLU

当当:http://product.dangdang.com/23606265.html

互动出版网:http://product.china-pub.com/3770734

 

《Cocos2d-x实战 C++卷》源码及样章下载地址:

源码下载地址:http://51work6.com/forum.php?mod=viewthread&tid=1155&extra=page%3D1 

样章下载地址:http://51work6.com/forum.php?mod=viewthread&tid=1157&extra=page%3D1

欢迎关注智捷iOS课堂微信公共平台

实例:使用纹理对象创建Sprite对象
            
    
    博客分类: cocos2d-x移动开发,cocos2d cocos2d-x移动开发cocos2d