zoukankan      html  css  js  c++  java
  • 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值得好好研究学习。

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




  • 相关阅读:
    「Vijos 1282」「OIBH杯NOIP2006第二次模拟赛」佳佳的魔法照片
    「Vijos 1285」「OIBH杯NOIP2006第二次模拟赛」佳佳的魔法药水
    「Vijos 1284」「OIBH杯NOIP2006第二次模拟赛」佳佳的魔法阵
    「Vijos 1283」「OIBH杯NOIP2006第二次模拟赛」佳佳的魔杖
    「2018-12-02模拟赛」T3 约束排列 解题报告
    「2018-12-02模拟赛」T2 种树 解题报告
    「2018-12-02模拟赛」T1 最短路 解题报告
    「分块系列」公主的朋友 解题报告
    「分块系列」「洛谷P4168 [Violet]」蒲公英 解题报告
    Java高级架构师(一)第03节:多模块多Web应用合并War包
  • 原文地址:https://www.cnblogs.com/yfceshi/p/6925609.html
Copyright © 2011-2022 走看看