Cocos2d-x3.2 简单手势识别


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

//GameScene.h

 

#include "cocos2d.h"

 

USING_NS_CC;

 

class GameScene : public cocos2d::Layer

{

public:

    static cocos2d::Scene* createScene();

     

    virtual bool init();

     

    virtual bool onTouchBegan(Touch *touch, Event *unused_event);

    virtual void onTouchMoved(Touch *touch, Event *unused_event);

    virtual void onTouchEnded(Touch *touch, Event *unused_event);

     

    void funCallback(float dt);

     

    CREATE_FUNC(GameScene);

     

private:        //注意不能用auto关键字

    Size size;

    Sprite *sprite;

     

    Point prePos;   //起点位置

    Point curPos;   //当前点位置

    float moveDistance;

};

?


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

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

//GameScene.cpp

 

//  Created by Jacedy on 14-8-11.

 

#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 = Director::getInstance()->getVisibleSize();

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

    //添加一个图片精灵

    sprite = Sprite::create("OnePiece_1.png");

    sprite->setPosition(Vec2(size.width/2, size.height/2));

    this->addChild(sprite);

     

    //设定滑动距离

    moveDistance = 30;

     

    //创建监听事件对象

    auto listener = EventListenerTouchOneByOne::create();

     

    //定义监听事件的回调函数

    listener->onTouchBegan = CC_CALLBACK_2(GameScene::onTouchBegan, this);

    listener->onTouchMoved = CC_CALLBACK_2(GameScene::onTouchMoved, this);

    listener->onTouchEnded = CC_CALLBACK_2(GameScene::onTouchEnded, this);

     

    //在事件分发器中注册

    _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this);

     

    return true;

}

 

void GameScene::funCallback(float dt)

{

    auto sub = Vec2(prePos, curPos);

     

    //判断水平和垂直方向上哪个偏移量大

    //水平移动

    if (fabs(sub.x) > fabs(sub.y))

    {

        //右滑

        if (sub.x > moveDistance)

            log("right");

        else

            //左滑

            if (sub.x < -moveDistance)

                log("left");

    }

    else

    {

        //上滑

        if (sub.y > moveDistance)

            log("up");

        else

            //下滑

            if (sub.y < -moveDistance)

                log("down");

    }

}

 

bool GameScene::onTouchBegan(Touch *touch, Event *unused_event)

{

    auto pos = touch->getLocation();

     

    //保存起始点

    prePos = pos;

     

    scheduleOnce(schedule_selector(GameScene::funCallback), 0.3f);

     

    return true;

}

 

void GameScene::onTouchMoved(Touch *touch, Event *unused_event)

{

    auto pos = touch->getLocation();

     

    //随时获取当前移动点的位置

    curPos = pos;

}

 

void GameScene::onTouchEnded(Touch *touch, Event *unused_event)

{

    auto pos = touch->getLocation();

}


时间: 2024-09-20 11:52:47

Cocos2d-x3.2 简单手势识别的相关文章

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文件,如何在代码中加载,以及控制其开启和关闭,求大神指点

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

《Cocos2D-x权威指南》——1.1 什么是Cocos2D

1.1 什么是Cocos2D 大家认识并且熟悉Cocos2D,应该是从App Store上几款非常火爆的游戏开始的,但是实际上Cocos2D引擎最早并非是为iOS(iPhone Operating System,苹果移动设备操作系统)设计的.最早它是一款用Python语言开发的游戏引擎,后来使用Objective-C被移植为iOS平台的Cocos2D- iPhone版本.不仅如此,Cocos2D被移植成各个版本,形成了庞大的Cocos2D家族.1.1.1 Cocos2D的特点 Cocos2D是一

Cocos2D旋转炮塔到指定角度(一)

原文地址:Rotating Turrets: How To Make A Simple iPhone Game with Cocos2D 2.X Part 2 翻译有节选和删除. 在你旋转炮塔之前,首先你要计算出需要旋转的角度. 为了计算,回忆一下高中的三角学.还能记住助记词SOH CAH和TOA吗?它可以帮助你回忆三角形角的正切(Tangent)等于对边比临边,如下图所示: 就像上图显示的那样,你需要旋转的角度等于矩形的Y偏移除以X偏移. 不管怎样,这里有2件事需要记住: 首先,当你计算矩形(

【Cocos2d-x】开发实战-Cocos中的字符串、标签和中文乱码

本篇博客讲解: 1.Ccocos2d-x中的字符串 2.使用标签 3.中文乱码问题 Ccocos2d-x中的字符串 使用const char和stdstring 使用cocos2d__String 数据类型之间的转换 Win32平台下中文乱码问题 解决方法一 解决方法二 解决方法三 使用标签 LabelTTF LabelAtlas LabelBMFont Cocos2d-x 3x标签类Label 标签中文乱码问题 源代码下载地址 Ccocos2d-x中的字符串 使用const char*和std

《数值分析(原书第2版)》—— 1.5 不需要导数的根求解

1.5 不需要导数的根求解 除了重根,牛顿方法比二分法和FPI方法的收敛速度更快.它达到了这种更快的速度是因为使用了更多的信息,尤其是通过函数导数得到的函数切线方向的信息.在某些情况下,可能难以计算导数.在这种情况下,割线方法是牛顿方法的一个非常好的替代.它使用近似值割线替代了切线,并且收敛速度差不多快.割线方法的变体使用抛物线替换了直线,抛物线可能具有垂直轴(Muller方法)或者水平轴(逆二次插值).本节最后描述Brent方法,这是一种结合了迭代和括号方法的优良特征的混合方法. 1.5.1

【COCOS2D-HTML5 开发之一】新建HTML5项目及简单阐述与COCOS2D/X引擎关系

本站文章均为 李华明Himi 原创,转载务必在明显处注明:  转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/cocos2d-html5/1463.html             真的是有一段时间没写博了,这段时间呢,发生的事情真的挺多,另外自己呢也闲来做了一些自己的喜欢的东西,主要做的还是基于Mac系统的Cocoa框架的各种编辑器吧.(对了,今年初也出了自己第二本书<iOS游戏编程之从零开始-Cocos2d-x与cocos2d引擎游戏开发>)