cocos2d-x step by step(2) 鼠标事件,键盘事件,等等事件
各种小控件加载进去了,那么问题来了,这些东西如何接受事件呢?
good job,let us find the answer
首先我们去看文档,官方尼玛有好多文档,而且大,全,详细,感觉还是不错的
喏,这个是事件的连接
这里我不想copy人家代码,什么的,没意思,我只说一下我迁移时候遇到的问题。
笔者c++都丢给体育老师了,一些基本东西都忘记了。
#include "cocos2d.h"
#include "ui/UIWidget.h"
#include "base/CCEventKeyboard.h"
using namespace cocos2d;
class FishTestScence :public cocos2d::Scene
{
public:
virtual bool init(); static cocos2d::Scene* scene(); void menuCloseCallback(Ref* sender); void onButtonClicked(Ref *pSender,ui::Widget::TouchEventType type);
void onKeyPressed(EventKeyboard::KeyCode keyCode, Event* event);
void onKeyReleased(EventKeyboard::KeyCode keyCode, Event* event);
CREATE_FUNC(FishTestScence);
};
#endif
我是拿键盘事件作为测试的,首先你要在头文件声明这两个函数,这个是官方提供的,应该不会有多大出入
void onKeyPressed(EventKeyboard::KeyCode keyCode, Event* event);
void onKeyReleased(EventKeyboard::KeyCode keyCode, Event* event);
那么问题来了,我引用了
#include "base/CCEventKeyboard.h"
这个头文件
然后我编译时候宁死过不了,我问了一下同事,c++不像c#哪样,你需要完整的路径,也就是说
cocos2d::ventKeyboard::KeyCode
或者加上
using namespace cocos2d;
这样才不报错 在cpp文件内:
bool FishTestScence::init()
{
if (!Scene::init())
{
return false;
} auto visibleSize = Director::getInstance()->getVisibleSize();
auto origin = Director::getInstance()->getVisibleOrigin(); auto button = ui::Button::create("dangban.png", "ball.png"); button->setPosition(Vec2(visibleSize / ) + origin);
button->setPressedActionEnabled(true);
button->setTitleText("lou zhu sb"); button->addTouchEventListener(CC_CALLBACK_2(FishTestScence::onButtonClicked, this));
this->addChild(button); auto listener = EventListenerKeyboard::create();
listener->onKeyPressed = CC_CALLBACK_2(FishTestScence::onKeyPressed, this);
listener->onKeyReleased = CC_CALLBACK_2(FishTestScence::onKeyReleased, this); _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this); return true;
} // 键位响应函数原型
void FishTestScence::onKeyPressed(EventKeyboard::KeyCode keyCode, Event* event)
{ } void FishTestScence::onKeyReleased(EventKeyboard::KeyCode keyCode, Event* event)
{ } void FishTestScence::onButtonClicked(Ref *pSender, cocos2d::ui::Widget::TouchEventType type)
{ }
加上断点,就能够接收到事件了。
感觉其实不难,但是有时候有些坑如果卡着就悲剧了
共勉之。
cocos2d-x step by step(2) 鼠标事件,键盘事件,等等事件的更多相关文章
- OpenGL(十六) 鼠标、键盘交互响应事件
OpenGL中通过鼠标和键盘跟程序交互的实现需要实现注册鼠标和键盘响应事件,在一定条件下,该事件被触发,事件里的程序被执行,达到交互的目的. 通过glutMouseFunc(&OnMouse) ...
- js鼠标,键盘,坐标轴事件
鼠标按下事件,左键是0,滑轮是1,右键2 document.getElementById("box").onmousedown =function(e) { if (e.butto ...
- selenium基础(鼠标和键盘事件)
selenium鼠标和键盘的操作事件 webdriver常见的几种操作方法 clear():清楚文本文字 send_keys(values):模拟按键输入,values是输入的内容 click():单 ...
- WPF Step By Step 自定义模板
WPF Step By Step 自定义模板 回顾 上一篇,我们简单介绍了几个基本的控件,本节我们将讲解每个控件的样式的自定义和数据模板的自定义,我们会结合项目中的具体的要求和场景来分析,给出我们实现 ...
- 第二章 ActionScript 3.0学习之画星星(鼠标及键盘事件)
今天觉得学到的比较有趣,所以记录之......~~~ 下面这段就是画出星星的代码:StarShape.as package { import flash.display.Shape; import f ...
- WPF Step By Step 系列-Prism框架在项目中使用
WPF Step By Step 系列-Prism框架在项目中使用 回顾 上一篇,我们介绍了关于控件模板的用法,本节我们将继续说明WPF更加实用的内容,在大型的项目中如何使用Prism框架,并给予Pr ...
- WPF Step By Step 系列 - 开篇 ·
WPF Step By Step 系列 - 开篇 公司最近要去我去整理出一个完整的WPF培训的教程,我刚好将自己学习WPF的过程和经验总结整理成笔记的方式来讲述,这里就不按照书上面的东西来说了,书本上 ...
- enode框架step by step之消息队列的设计思路
enode框架step by step之消息队列的设计思路 enode框架系列step by step文章系列索引: enode框架step by step之开篇 enode框架step by ste ...
- enode框架step by step之事件驱动架构(EDA)思想的在框架中如何体现
enode框架step by step之事件驱动架构(EDA)思想的在框架中如何体现 上一篇文章,我给大家分享了我的一个基于DDD以及EDA架构的框架enode,但是只是介绍了一个大概.接下来我准备用 ...
- enode框架step by step之saga的思想与实现
enode框架step by step之saga的思想与实现 enode框架系列step by step文章系列索引: 分享一个基于DDD以及事件驱动架构(EDA)的应用开发框架enode enode ...
随机推荐
- BZOJ 4425: [Nwerc2015]Assigning Workstations分配工作站
难度在于读题 #include<cstdio> #include<algorithm> #include<queue> using namespace std; p ...
- 和为n连续正数序列 【微软面试100题 第五十一题】
题目要求: 输入一个正数n,输出所有和为n连续正数序列(至少两个). 例如输入15,由于1+2+3+4+5 = 4+5+6 = 7+8 = 15.所以输出3个连续序列1~5,4~6,7~8. 参考资料 ...
- [POJ 1008] Maya Calendar C++解题
Maya Calendar Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 62297 Accepted: 192 ...
- python学习-- 数据库迁移 python manage.py makemigrations 和 python manage.py migrate
python manage.py makemigrations 和 python manage.py migrate
- C语言总结(3)
1.字符输入函数getchar 输入一个字符 char ch; ch=getchai(); 字符输出函数putchar 输出一个字符 putchar(输出参数): 2.调用scanf和printf输入 ...
- 动态方式破解apk进阶篇(IDA调试so源码)
动态方式破解apk进阶篇(IDA调试so源码) 来源 https://blog.csdn.net/qq_21051503/article/details/74907449 下面就说关于在IDA中And ...
- mysql经验总结
1. 连接mysql遇到 Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2),mysql没有正常启动 $ ...
- 如何回答“线上CPU100%排查”面试问题
案例: public class App { public static void main( String[] args ) { int a = 0; while (a < 100) { a ...
- [转] Makefile 基础 (10) —— Makefile 后序
该篇文章为转载,是对原作者系列文章的总汇加上标注. 支持原创,请移步陈浩大神博客:(最原始版本) http://blog.csdn.net/haoel/article/details/2886 我转自 ...
- Lua local function与function区别
1 使用function声明的函数为全局函数,在被引用时可以不会因为声明的顺序而找不到 2 使用local function声明的函数为局部函数,在引用的时候必须要在声明的函数后面 例子: 下面这段代 ...