cocos2d-x 3.x之触摸事件

  次阅读 作者:智能小宝 来源:互联网 2015-09-28 10:55 我要评论(0)

Layer类的一个重要作用就是接受输入事件,它封装了触摸输入的处理接口。一般情况下,我们可以通过setTouchEnabled方法来开启或关闭接收触摸输入。事实上并不是只有Layer才支持接收触摸事件,任何一个游戏元素都可以接收事件,只不过Layer提供了现成的支持。

我们只需通过创建一个事件监听器用来实现各种触发后的逻辑,然后添加到事件分发器_eventDispatcher中,所有事件监听器由这个分发器统一管理,即可完成事件响应。

为一个精灵添加触摸事件的四个步骤

1.创建一个精灵

2.创建一个事件监听器(单点触摸或多点触摸)

3.实现各种触发后的逻辑(onTouchBegan,onTouchMoved,onTouchEnded等)

4.将事件监听器添加到事件分发器中

// 1.首先添加一个精灵元素

bool GameScene::init()

{

sprite = Sprite::create();

sprite->setPosition(100, 100);

this->addChild(sprite);

}

void GameScene::addTouchEvent()

{

// 2.创建一个单点触摸监听器

auto touchListener = EventListenerTouchOneByOne::create();

// 3.实现触摸后的逻辑处理,使用lambda表达式实现触摸事件处理的回调函数

// 触摸开始

touchListener->onTouchBegan = [](Touch *touch, Event *event)

{

// 获取点击的openGL坐标

auto touchPos = touch->getLocation();

// 获取触摸事件的相关目标,即玩家飞机

auto target = static_cast(event->getCurrentTarget());

// 获取飞机所在区域

auto playerPos = target->getPosition();

auto playerSize = target->getContentSize();

auto rect = Rect(playerPos.x - playerSize.width/2, playerPos.y - playerSize.height/2,

playerSize.width, playerSize.height);

if(rect.containsPoint(touchPos))

{

return true;

}

// 返回false会导致后面的onTouchMoved和onTouchEnded不会执行

return false;

};

// 滑动

touchListener->onTouchMoved = [](Touch *touch, Event *event)

{

auto touchPos = touch->getLocation();

auto target = static_cast(event->getCurrentTarget());

target->setPosition(touchPos);

};

// 触摸结束

touchListener->onTouchEnded = [](Touch *touch, Event *event)

{

log(touch end);

};

/*

4.最后将事件监听器添加到事件分发器_eventDispatcher中 _eventDispatcher是Node的属性,通过它管理当前节点(场景、层、精灵等)的所有事件的分发。但它本身是一个单例模式值的引用,在Node的构造函数中,通过Director::getInstance()->getEventDispatcher(); 获取,有了这个属性,就能方便的处理事件。

本站文章信息来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-1688-302!

人工智能实验室
相关文章相关文章
  • 无人驾驶汽车如何改变城市生活?听听他们怎么说

    无人驾驶汽车如何改变城市生活?听听他们怎么说

  • 英国研发“杀生”机器人 通过生命体获取能量

    英国研发“杀生”机器人 通过生命体获取能量

  • 韩春雨称已能重复实验结果 近期将有消息公布

    韩春雨称已能重复实验结果 近期将有消息公布

  • 未来两年人工智能要怎么走?看这篇就够了

    未来两年人工智能要怎么走?看这篇就够了

网友点评网友点评
阅读推荐阅读推荐

据国外媒体报道,在过去两年内,聊天机器人(chatbot)、人工智能以及机器学习的研发和采用取得了巨大进展。许多初创公司正利用人工智能和...

霍金 视觉中国 图 英国著名物理学家霍金(Stephen Hawking)再次就人工智能(AI)发声,他认为:对于人类来说,强大AI的出现可能是最美妙的...

文|郑娟娟 今年,人工智能(AI) 60岁了。在AI60岁的时候,笔者想要介绍一下AI100,一个刚刚2岁的研究项目,但它的预设寿命是100年,甚至更长...

AlphaGo与李世石的人机大战,为大众迅速普及了人工智能的概念。 但对谷歌而言,除了下围棋,现在的人工智能进展到哪一步了?未来,人工智能...