cocos2d-x学习之(二)有关精灵的一些秘密

精灵的创建

CCSprite  *sprite =  CCSprite :: create ( “图片名.png” );

CCSpriteBatchNode
优点:CCSpriteBatchNode 中的所有CCSprite只会被渲染1次,因此可以提高游戏的FPS。
限制:加入到 CCSpriteBatchNode 中的CCSprite必须使用同一张纹理图。
问:什么时候应该用CCSpriteBatchNode?
答:比如游戏中的子弹 就很适合用它,因为子弹都是一个样子。
答:通过TexturePacker生成的纹理图也适合使用它。
/*
*   TexturePacker纹理:
*
*/
eg: 
   // 创建批次处理对象,并添加到场景里
  CCSpriteBatchNode *batchNode = CCSpriteBatchNode :: create ( "Icon-72.png" );
  this -> addChild (batchNode);
    
  for ( int i = 0 ; i < 999 ; i++) 
{
       CCSprite *sprite = CCSprite :: create ( "Icon-72.png" );
      sprite-> setPosition ( ccp ( CCRANDOM_0_1 ()* 480 , CCRANDOM_0_1 ()* 320 ));
       //将精灵添加到batchNode对象
      batchNode-> addChild (sprite);
 }

CCSpriteFrameCache缓冲池
  // 创建缓冲池
CCSpriteFrameCache *frameCache = CCSpriteFrameCache :: sharedSpriteFrameCache ();
  // 将图片加载到精灵帧缓冲池
frameCache-> addSpriteFramesWithFile ( " 大张图片 .plist" , " 大张图片 .png" );
CCSprite *sprite1 = CCSprite :: createWithSpriteFrameName ( " 小张图片 .png" );
sprite1-> setPosition ( ccp ( 50 , 200 ));
this -> addChild (sprite1);
  /*
   *  软件TexturePacker的使用
   *
   */

九妹图片的拉伸

在.h中导入:

#include "cocos-ext.h"

using namespace cocos2d::extension;

// 九妹拉伸图片
    CCScale9Sprite *btnNormal = CCScale9Sprite :: create ( “图片源.png" );
    CCScale9Sprite *btnDown = CCScale9Sprite :: create ( "图片源.png" );
// 创建标签
    CCLabelTTF *title = CCLabelTTF :: create ( "Touch Me" , "Marker Felt" , 30 );
//CCControlButton其实是 空壳, 用来加载东西的
    CCControlButton *controlButton = CCControlButton :: create (title,btnNormal);
// 强制设置按钮大小,不然图片会随着Label文字的长度拉伸
   controlButton-> setPreferredSize ( CCSize ( 300 , 50 ));
// 设置按钮按下的图片
   controlButton-> setBackgroundSpriteForState (btnDown, CCControlStateSelected );
        controlButton-> setPosition ( ccp ( 200 , 200 ));
        
//添加 点击事件,创建实例方法
   controlButton-> addTargetWithActionForControlEvents ( this , cccontrol_selector ( HelloWorld :: touchDown ), CCControlEventTouchDown );
在.h中
// 创建点击事件的实例方法
private :    void touchDown( CCObject *pSender, CCControlEvent event);


精灵的动画
创建精灵动画的步骤:
         创建一组CCSpriteFrame对象,每张动画图片为一个CCSpriteFrame对象
         用这组CCSpriteFrame对象创建一个CCAnimation对象,该对象包含的动画所需的一些配置信息
         利用CCAnimation对象创建一个CCAnimate对象,精灵直接调用runAction即可执行CCAnimate动画
eg:    
    // 创建精灵缓冲池
     CCSpriteFrameCache *frameCache = CCSpriteFrameCache :: sharedSpriteFrameCache ();
    frameCache-> addSpriteFramesWithFile ( "AnimBear.plist" , "AnimBear.png" );
     int iFrameNum = 8 ;
     CCSpriteFrame *frame = NULL ;
     // 创建数组接收所有的图片
     CCArray *frameArray = CCArray :: create ();
     for ( int i = 0 ; i < iFrameNum; i++) {
        frame = frameCache-> spriteFrameByName ( CCString :: createWithFormat ( "bear_0%d.png" ,i)-> getCString ());
        frameArray-> addObject (frame);
    }

     CCAnimation *animation = CCAnimation :: createWithSpriteFrames (frameArray);
    animation-> setLoops (- 1 );          // 设置播放的次数
    animation-> setDelayPerUnit ( 0.1f ); // 设置图片交换速度

      // 将动画包装成一个动作
     CCAnimate *acton = CCAnimate :: create (animation);
     // 调用动作的函数
    runSprite-> runAction ( createAnimate2 ());

精灵的移动
// 创建 MoveTo 动作对象, To 是绝对移动的, By 是相对移动的
CCMoveTo *moveTo = CCMoveTo :: create ( 2.8f , ccp ( 0 , 150 ));
sprite-> runAction (moveTo);   // 精灵执行动作
// 拉伸运动,参数时间, X 反向的拉伸, Y 反向的拉伸
CCScaleTo *scaleTo = CCScaleTo :: create ( 2.0f , 1.5f , 2.3f );
sprite-> runAction (scaleTo);
// 参数时间,每次跳的位置,跳高,跳频率
CCJumpBy *jumpBy = CCJumpBy :: create ( 3.0f , ccp ( 50 , 10 ), 100 , 1 );
// 设置动作永远重复
CCRepeatForever *repeatForever = CCRepeatForever :: create (jumpBy);
// 设置动作执行的次数
CCRepeat *repeat = CCRepeat :: create (jumpBy, 3 );
ccBezierConfig bezier;
bezier. controlPoint_1 = ccp ( 100 , 200 );  // 波谷偏向值
bezier. controlPoint_2 = ccp ( 200 , 50 ); // 波峰偏向值
bezier. endPosition = ccp ( 300 , 100 );    // 动作终点
CCBezierBy *bezierBy = CCBezierBy :: create ( 4.0f , bezier);
 sprite-> runAction (bezierBy);
// 组合动作,CCSpawn所有动作一起执行,CCSequence是动作一个一个播放
CCAction *action = CCSpawn::create(...,...,.., NULL );
// 回调函数
CCCallFunc *callFunc = CCCallFunc::create( this , callfunc_selector (HelloWorld::backFunc));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本火锅店点餐系统采用Java语言和Vue技术,框架采用SSM,搭配Mysql数据库,运行在Idea里,采用小程序模式。本火锅店点餐系统提供管理员、用户两种角色的服务。总的功能包括菜品的查询、菜品的购买、餐桌预定和订单管理。本系统可以帮助管理员更新菜品信息和管理订单信息,帮助用户实现在线的点餐方式,并可以实现餐桌预定。本系统采用成熟技术开发可以完成点餐管理的相关工作。 本系统的功能围绕用户、管理员两种权限设计。根据不同权限的不同需求设计出更符合用户要求的功能。本系统中管理员主要负责审核管理用户,发布分享新的菜品,审核用户的订餐信息和餐桌预定信息等,用户可以对需要的菜品进行购买、预定餐桌等。用户可以管理个人资料、查询菜品、在线点餐和预定餐桌、管理订单等,用户的个人资料是由管理员添加用户资料时产生,用户的订单内容由用户在购买菜品时产生,用户预定信息由用户在预定餐桌操作时产生。 本系统的功能设计为管理员、用户两部分。管理员为菜品管理、菜品分类管理、用户管理、订单管理等,用户的功能为查询菜品,在线点餐、预定餐桌、管理个人信息等。 管理员负责用户信息的删除和管理,用户的姓名和手机号都可以由管理员在此功能里看到。管理员可以对菜品的信息进行管理、审核。本功能可以实现菜品的定时更新和审核管理。本功能包括查询餐桌,也可以发布新的餐桌信息。管理员可以查询已预定的餐桌,并进行审核。管理员可以管理公告和系统的轮播图,可以安排活动。管理员可以对个人的资料进行修改和管理,管理员还可以在本功能里修改密码。管理员可以查询用户的订单,并完成菜品的安排。 当用户登录进系统后可以修改自己的资料,可以使自己信息的保持正确性。还可以修改密码。用户可以浏览所有的菜品,可以查看详细的菜品内容,也可以进行菜品的点餐。在本功能里用户可以进行点餐。用户可以浏览没有预定出去的餐桌,选择合适的餐桌可以进行预定。用户可以管理购物车里的菜品。用户可以管理自己的订单,在订单管理界面里也可以进行查询操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值