Cocos2d-x3.2 持续动作


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

//GameScene.h

 

#include "cocos2d.h"

 

class GameScene : public cocos2d::Layer

{

public:

    static cocos2d::Scene* createScene();

     

    virtual bool init();

     

    void menuCallback(cocos2d::Ref* pSender);

     

    CREATE_FUNC(GameScene);

};

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

//GameScene.cpp

 

#include "GameScene.h"

 

USING_NS_CC;

 

cocos2d::Scene* GameScene::createScene()

{

    auto scene = Scene::create();   //创建一个场景

    auto layer = GameScene::create();   //创建一个图层

    scene->addChild(layer);

    return scene;

}

 

//初始化当前的图层

bool GameScene::init()

{

    if(!Layer::init())      //初始化父类

        return false;

     

    //获取屏幕大小

    Size visibleSize = Director::getInstance()->getVisibleSize();

    //auto size = Director::getInstance()->getWinSize();

     

    auto sprite1 = Sprite::create("Icon.png");

    sprite1->setPosition(Vec2(visibleSize.width/2, visibleSize.height*0.8));

    this->addChild(sprite1);

     

    auto sprite2 = Sprite::create("Icon.png");

    sprite2->setPosition(Vec2(visibleSize.width*0.4, visibleSize.height*0.4));

    this->addChild(sprite2);

     

    auto sprite3 = Sprite::create("Icon.png");

    sprite3->setPosition(Vec2(visibleSize.width/2, visibleSize.height*0.2));

    this->addChild(sprite3);

    //移动

    auto moveTo = MoveTo::create(1, Vec2(visibleSize.width*0.8, visibleSize.height*0.8));

    auto moveBy = MoveBy::create(1, Point(-visibleSize.width*0.3, 0));     //此处不能用Vec2()形式,否则会报错

    //缩放

    //auto scaleTo = ScaleTo::create(1, 3);   //放大3倍

    auto scaleBy = ScaleBy::create(1, 3);

    auto rescale = scaleBy->reverse();      //动作逆向执行,不支持ScaleTo动作

     

    sprite1->runAction(RepeatForever::create(Sequence::create(scaleBy, rescale, moveTo, moveBy, NULL)));  //Sequence 动作依次执行

    //sprite1->runAction(Spawn::create(scaleBy, rescale, moveTo, moveBy, NULL));     //Spawn 动作同时执行

     

    //创建一个容量为5的数组,用来存放曲线样点

    auto array = PointArray::create(5);

    array->addControlPoint(Vec2(visibleSize.width*0.4, visibleSize.height*0.4));

    array->addControlPoint(Vec2(visibleSize.width*0.6, visibleSize.height*0.4));

    array->addControlPoint(Vec2(visibleSize.width*0.6, visibleSize.height*0.6));

    array->addControlPoint(Vec2(visibleSize.width*0.4, visibleSize.height*0.6));

    array->addControlPoint(Vec2(visibleSize.width*0.4, visibleSize.height*0.4));

    //样条曲线运动,第三个参数:小于1向外弯曲,大于1向内弯曲

    auto action = CardinalSplineTo::create(4, array, 0.1f);

    //sprite2->runAction(Repeat::create(action, 5));      //动作重复执行5次

    sprite2->runAction(RepeatForever::create(action));      //动作永久执行

     

    //旋转

    auto rotateTo = RotateTo::create(2, 30);    //顺时针旋转30°

     

    //倾斜

    auto skewTo = SkewTo::create(2, 15, 30);    //沿X轴倾斜15°,沿Y轴倾斜30°

     

    //闪烁

    auto blink = Blink::create(2, 4);       //闪烁4次

     

    //透明度变化

    auto fadeTo = FadeTo::create(2, 200);   //透明度变为100

//    auto fadeIn = FadeIn::create(2);      //从透明到不透明

//    auto fadeOut = FadeOut::create(2);    //从不透明到透明

     

    //颜色变化

    auto tintTo = TintTo::create(2, 0, 200, 0);

     

    //跳动

    auto jumpTo = JumpTo::create(2, Vec2(visibleSize.width*0.8, visibleSize.height*0.2), 30, 5);

     

    sprite3->runAction(Sequence::create(jumpTo, fadeTo, tintTo, blink, rotateTo, skewTo, NULL));

     

     

     

    return true;

}

时间: 2024-09-23 16:22:01

Cocos2d-x3.2 持续动作的相关文章

cocos2D v3.x中动作回调函数的变化

cocos2D v3.x版本中的动作的回调函数不能再带任何参数并且不能返回任何值. 官方给出的传递参数的办法是: 选择器(selector)不能带有任何形参,选择器需要的参数必须通过ivar或property来间接传递. 通常更可取的避免通过ivar或property来传递参数的办法是使用CCActionCallBlock. 示例代码如下: id callFunc = [CCActionCallFunc actionWithTarget:self selector@selector(myCall

Android游戏开发cocos-2d中精灵的动作测试

安装好cocos-2d之后,创建一个好一个Android项目,在项目中复制下载好的Cocos-2d包中的cocos2d-master\cocos2d-android\libs中的所有文件,全部粘贴到Android项目中的libs目录下,右击libs中的cocos2d-android.jar,然后builder path操作.这样就创建好了游戏项目. 以下是一个入门的小程序: MainActivity.java代码: import org.cocos2d.layers.CCScene; impor

cocos2d x3 6移植安卓-cocos2d-x3.6移植安卓时出现图片中错误如何解决?

问题描述 cocos2d-x3.6移植安卓时出现图片中错误如何解决? 解决方案 这是安卓的版本问题啊.你NDK设置编译的andorid17..但是androidMainfest.xml里设置的是最少 9,改下.把9改成17看看 解决方案二: 这是安卓的版本问题啊.你NDK设置编译的andorid17..但是androidMainfest.xml里设置的是最少 9,改下.把9改成17看看

cocos2d x3 0bate相关-Cocos2d-x3.0bate版,关于粒子特效

问题描述 Cocos2d-x3.0bate版,关于粒子特效 用粒子编辑器生成个.plist文件,如何在代码中加载,以及控制其开启和关闭,求大神指点

《Cocos2d 跨平台游戏开发指南(第2版)》一1.9 添加动作到精灵

1.9 添加动作到精灵 在前面的动画制作中,我们已经学习了一些有关Actions的内容.除此之外,Cocos2d中还有更多动作供你使用.并且,你也可以把多种动作组成一个动作序列,集中应用到目标对象上. 1.9.1 准备工作 首先,让我们一起看一个简单的动作,它用来把hero沿着x轴移动屏幕宽度的一半,并沿y轴方向从中心向下移动屏幕高度的四分之一. 1.9.2 操作步骤 在把hero添加到MainScene之后,在MainScene.m文件中添加如下代码: CGPointfinalPos = CG

Cocosd2d实例教程(五) Cocos2d添加虚拟摇杆控制器

1.介绍 cocos2d为我们提供了好用的摇杆控制器,主要是对ZJoystick.h和ZJoystick.m的添加,实现了如下图的功能.通过摇杆可以控制图中精灵的移动.(但是还有一个技术性问题亟待解决,就是精灵移动后会有一个重影留在初始位置) 2.摇杆的实现 1) 将资源中的ZJoystick文件夹加到工程中(页面下方提供下载地址), 精灵的添加以及移动前面已经讲了,不知道的同学可以看教程四.工程名字为ControlWalking 2)修改HelloWorldLayer.h文件.加入一些需要的节

Cocosd2d实例教程(三) Cocos2d瓦片地图的导入

上一节讲了如何使用Tiled制作瓦片地图,下面讲一下如何将地图导入游戏中. 第一步:将生成的文件导入resource中,如图,分别为地图和图片集 第二步:在HelloWorldLayer.h中修改代码,有一定基础的人还是比较好理解的. #import <GameKit/GameKit.h> // When you import this file, you import all the cocos2d classes #import "cocos2d.h" // Hello

动作

原理介绍 动作类(Action)是所有动作的基类,它创建的一个对象代表一个动作.动作作用于Node,因此每个动作都需要由Node对象执行.动作类(Action)作为基类,实际上是一个接口,动作类的大多数实现类都派生于有限时间动作类(FiniteTimeAction). 在实际开发中我们通常用到两类动作-即时动作和持续动作,它们均继承于有限时间动作类. 即时动作 即时动作只能够立刻完成的动作,这类动作是在下一帧立刻完成的动作,如设定位置.设定缩放等.把它们包装成动作后,可以与其他动作类组合为复杂动

详解Facebook田渊栋NIPS2017论文:让大家都能做得起深度强化学习研究的ELF平台

这周,机器学习顶级会议 NIPS 2017 的论文评审结果已经通知到各位论文作者了,许多作者都马上发 Facebook/Twitter/Blog/朋友圈分享了论文被收录的喜讯.大家的熟人 Facebook 人工智能研究院研究员田渊栋也有一篇论文入选,论文名为「ELF: An Extensive, Lightweight and Flexible Research Platform for Real-time Strategy Games」.这篇论文介绍了他们构建的强化学习研究平台 ELF,为环境