各种小控件加载进去了,那么问题来了,这些东西如何接受事件呢?

good job,let us find the answer

首先我们去看文档,官方尼玛有好多文档,而且大,全,详细,感觉还是不错的

http://cn.cocos2d-x.org/article/index?type=cocos2d-x&url=/doc/cocos-docs-master/manual/framework/native/v3/event-dispatcher/zh.md

喏,这个是事件的连接

这里我不想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) 鼠标事件,键盘事件,等等事件的更多相关文章

  1. OpenGL(十六) 鼠标、键盘交互响应事件

    OpenGL中通过鼠标和键盘跟程序交互的实现需要实现注册鼠标和键盘响应事件,在一定条件下,该事件被触发,事件里的程序被执行,达到交互的目的. 通过glutMouseFunc(&OnMouse) ...

  2. js鼠标,键盘,坐标轴事件

    鼠标按下事件,左键是0,滑轮是1,右键2 document.getElementById("box").onmousedown =function(e) { if (e.butto ...

  3. selenium基础(鼠标和键盘事件)

    selenium鼠标和键盘的操作事件 webdriver常见的几种操作方法 clear():清楚文本文字 send_keys(values):模拟按键输入,values是输入的内容 click():单 ...

  4. WPF Step By Step 自定义模板

    WPF Step By Step 自定义模板 回顾 上一篇,我们简单介绍了几个基本的控件,本节我们将讲解每个控件的样式的自定义和数据模板的自定义,我们会结合项目中的具体的要求和场景来分析,给出我们实现 ...

  5. 第二章 ActionScript 3.0学习之画星星(鼠标及键盘事件)

    今天觉得学到的比较有趣,所以记录之......~~~ 下面这段就是画出星星的代码:StarShape.as package { import flash.display.Shape; import f ...

  6. WPF Step By Step 系列-Prism框架在项目中使用

    WPF Step By Step 系列-Prism框架在项目中使用 回顾 上一篇,我们介绍了关于控件模板的用法,本节我们将继续说明WPF更加实用的内容,在大型的项目中如何使用Prism框架,并给予Pr ...

  7. WPF Step By Step 系列 - 开篇 ·

    WPF Step By Step 系列 - 开篇 公司最近要去我去整理出一个完整的WPF培训的教程,我刚好将自己学习WPF的过程和经验总结整理成笔记的方式来讲述,这里就不按照书上面的东西来说了,书本上 ...

  8. enode框架step by step之消息队列的设计思路

    enode框架step by step之消息队列的设计思路 enode框架系列step by step文章系列索引: enode框架step by step之开篇 enode框架step by ste ...

  9. enode框架step by step之事件驱动架构(EDA)思想的在框架中如何体现

    enode框架step by step之事件驱动架构(EDA)思想的在框架中如何体现 上一篇文章,我给大家分享了我的一个基于DDD以及EDA架构的框架enode,但是只是介绍了一个大概.接下来我准备用 ...

  10. enode框架step by step之saga的思想与实现

    enode框架step by step之saga的思想与实现 enode框架系列step by step文章系列索引: 分享一个基于DDD以及事件驱动架构(EDA)的应用开发框架enode enode ...

随机推荐

  1. hierarchy viewer不能获取userbuild手机版本的UI布局

    步骤很详细:http://maider.blog.sohu.com/255485243.html 其中的第7步命令需要更改为: java -jar smali-2.0.3.jar ./out -o c ...

  2. 认识Function.prototype.call

    一.前言                                大家先预计一下以下四个函数调用的结果吧! var test = function(){ console.log('hello w ...

  3. Selenium WebDriver-判断页面中某一元素是否已经显示,通常用于断言

    判断界面中某一元素是否已经呈现,多用于断言,代码如下: #encoding=utf-8 import unittest import time from selenium import webdriv ...

  4. day04_01 知识回顾、算术运算符

    ","和"+"的区别 除法运算,整除//,别名"地板除" 取余数 2**10 2的10次方 指数运算 指数运算符优先级要比乘法要高,所以先算 ...

  5. Matplotlib中文乱码解决办法

    Matplotlib中文乱码 解决方法如下: 首先设置源码文件编码方式为UTF-8 #-*- coding: utf-8 -*- 接着设置字体属性字典 font = {'family': 'SimHe ...

  6. thinkphp文件上传以及图片处理

    文件上传 上传表单 在ThinkPHP中使用上传功能无需进行特别处理.例如,下面是一个带有附件上传的表单提交: <form action="__URL__/upload" e ...

  7. Spring事务管理接口PlatformTransactionManager的实现类DataSourceTransactionManager

    package org.springframework.jdbc.datasource; import java.sql.Connection; import java.sql.SQLExceptio ...

  8. 【Mysql 优化 6】mysql优化的内容和思路

    根据最近做mysql优化,以及参照的官方文档的一些知识点,总结一下,如何下手去优化mysql 数据库.PS:更多可能是我个人的笔记总结记录,仅供参考 一.优化的内容 可以优化的内容,从范围的大小,可以 ...

  9. STL之map容器的详解

    一.关于map的介绍 map是STL的 一个容器,和set一样,map也是一种关联式容器.它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键 字的值)的数据 ...

  10. 关于iOS 7的几个开源项目

    MBSwitch   MBSwitch是一个体现了iOS 7扁平化设计风格的UISwitch,支持iOS 7以下系统.允许使用者进行颜色的深度自定义,你可以定义边框的颜色,开/关的颜色以及按钮的颜色. ...