Hi,欢迎来到华清远见移动互联网学院官网!国内王牌JAVAEE培训、Android培训、HTML5培训、UI培训、JAVA培训、VR培训机构!

  • 400-611-6270
  • 新浪微博
  • 微信
您当前的位置:移动互联网学院 > Android开发 > Cocos-android 动作介绍

Cocos-android 动作介绍

时间:2017-05-11 08:49 来源:移动互联网学院

一、CCAction

动作类:这个类是一个抽象类,他有四个直接的实现子类(CCFiniteTimeAction, CCFollow, CCRepeatForever, CCSpeed)。我们所有的动作都是这个四个子类的子类,我们在使用的时候也是直接使用的着四个类的子类对象执行相关的动作,下面我们来看一下一些常见的动作。

二、常用动作的使用

1、移动CCMoveBy;CCMoveTo

当我们的精灵执行CCMoveTo这个动作的时候会移动到指定的位置,而CCMoveBy则是沿着指定的方向移动一段距离(通过CGPoint.ccp(x,y)来指定)。

比如:下面的代码是将精灵做一个移动动作

CCSprite s = CCSprite.spriteWithSpriteFrameName("hero.png");

s.setAnchorPoint(0,0);//设置锚点

s.setPosition(300,150);//设置坐标

//创建一个移动动作①动作执行所需时间②x或y方向的位移

CCMoveBy move = CCMoveBy.actionWithDuration(1, ccp(100,80));

CCMoveBy moveBack = move.reverse();//reverse返回一个反方向的动作

CCSequence seq = CCSequence.actions(move, moveBack);//按顺序执行相应动作

CCRepeatForever rf = CCRepeatForever.action(seq);//永远重复执行该动作

s.runAction(rf);//运行动作

2、缩放CCScaleBy, 除了整体缩放外,还可以xy方向缩放不同的值放大缩小

float mapWidth= tiledMap.getContentSize().width;

CCScaleTo zoomin = CCScaleTo.actionWithDuration(1, 480/mapWidth);

CCDelayTime delay = CCDelayTime.actionWithDuration(0.3f);//该动作停留指定时间

CCScaleTo st = CCScaleTo.actionWithDuration(1, 1);

CCDelayTime delay2 = CCDelayTime.actionWithDuration(1);

CCInstantAction call = CCCallFunc.actionWithTarget(this, "mapScaleCallback");

tiledMap.runAction(CCSequence.actions(zoomin,delay,st,delay2,call));

3、旋转CCRotateBy,正反旋转

不断旋转精灵实现

//第一个参数为经历时间,第二个参数为要旋转的角度

CCRotateBy by = CCRotateBy.actionWithDuration(2, 360);

//设置该动作不断循环

CCRepeatForever seq = CCRepeatForever.action(by);

注意点:以锚点为中心点来旋转。如要以中心点旋转,则应设置锚点(0.5,0.5),如果锚点为(0,0),则以左下点为中心点旋转

4、曲线运动

CCBezierConfig bezier = new CCBezierConfig(); 

bezier.controlPoint_1 = ccp(10, 10); 起点

bezier.controlPoint_2 = ccp(50, 100); 控制点,制高点

bezier.endPosition = ccp(100, 20); 结束位置

CCBezierBy b = CCBezierBy.action(2, bezier);

5.其他动作

显示和隐藏CCHide CCShow

弹跳:CCJumpBy CCJumpTo。三个参数的含义a)时间b)目标点c)回落高度d)跳动次数

闪烁:CCBlink

播放序列帧:CCAnimation;CCAnimate

注意:如果不重复执行,只执行一次就报空指针,个人感觉引擎待优化的地方。

如果要停止播放,可以采用stopAction

三、动画的执行顺序

1.CCSequence:按顺序执行动画

CCSequence ccSequence = CCSequence.actions(move,moveto);//第二个参数是可变参数

CCCallFunc:执行指定函数的动作,回调动作

CCCallFuncN func = CCCallFuncN.action(this, "onActionFinished");//会在动作执行完后调用onActionFinished方法

public void onActionFinished(Object sender){

System.out.println("onActionFinished");

 }

3.CCDelayTime:逗留指定时间的动作

4.CCSpawn:同时执行要被执行的动作

  • 北京

    010-82600385/6

    北京市海淀区西三旗悦秀路北京明园大学校内

  • 上海

    021-54485127

    上海市徐汇区漕溪路250号银海大楼11层

  • 深圳

    0755-25590506

    深圳市龙华新区人民北路美丽AAA大厦15层

  • 成都

    028-85405115

    成都武侯区科华北路99号科华大厦2层

  • 南京

    025-86551900

    南京市白下区汉中路185号鸿运大厦11层

  • 武汉

    027-87804688

    武汉工程大学卓刀泉校区科技孵化器大楼11层

  • 西安

    029-88756251

    西安市高新区高新1路12号天公大厦3层

  • 广州

    020-38342087

    广州市天河软件园柯木塱园5栋三层

  • 沈阳

    024-24349000

    沈阳市沈河区北顺城路137号锦峰大厦7层

  • 济南

    0531-88898293

    济南市高新区舜华路三庆世纪财富中心B3座6层

  • 重庆

    023-68064704

    重庆市九龙坡区渝州路87号双薪时代九楼

  • 长沙

    15010390966

    长沙市开福区芙蓉中路海东青大厦B座11楼

Copyright © 2004-2017 华清远见教育集团 版权所有,沪ICP备10038863号-3,京公海网安备110108001117号