`
473687880
  • 浏览: 535545 次
文章分类
社区版块
存档分类
最新评论

cocos2d-x aplha3.0中添加touch事件

 
阅读更多

如果你想在layer子类里像原来那样override CClayer里的这几个函数:

   // Deprecated touch callbacks.
    CC_DEPRECATED_ATTRIBUTE virtual bool ccTouchBegan(Touch *pTouch, Event *pEvent)  final{CC_UNUSED_PARAM(pTouch); CC_UNUSED_PARAM(pEvent); return false;};
    CC_DEPRECATED_ATTRIBUTE virtual void ccTouchMoved(Touch *pTouch, Event *pEvent)  final{CC_UNUSED_PARAM(pTouch); CC_UNUSED_PARAM(pEvent);}
    CC_DEPRECATED_ATTRIBUTE virtual void ccTouchEnded(Touch *pTouch, Event *pEvent)  final{CC_UNUSED_PARAM(pTouch); CC_UNUSED_PARAM(pEvent);}
    CC_DEPRECATED_ATTRIBUTE virtual void ccTouchCancelled(Touch *pTouch, Event *pEvent)  final{CC_UNUSED_PARAM(pTouch); CC_UNUSED_PARAM(pEvent);}
    
    CC_DEPRECATED_ATTRIBUTE virtual void ccTouchesBegan(Set *pTouches, Event *pEvent)  final{CC_UNUSED_PARAM(pTouches); CC_UNUSED_PARAM(pEvent);}
    CC_DEPRECATED_ATTRIBUTE virtual void ccTouchesMoved(Set *pTouches, Event *pEvent)  final{CC_UNUSED_PARAM(pTouches); CC_UNUSED_PARAM(pEvent);}

你会发现编译错误,因为C++11的新关键字final被添加上去了,不允许被重载了。

那该怎么办呢?

cocos2d-x增加了新的机制来添加事件:

举个例子就明白了:

void OptionLayer::createEventListener()
{
	 auto dispatcher = EventDispatcher::getInstance();
	 auto listener = EventListenerTouch::create(Touch::DispatchMode::ALL_AT_ONCE);

	 listener->onTouchesBegan = CC_CALLBACK_2(OptionLayer::myTouchesBegan, this)	;

	 listener->onTouchesMoved = CC_CALLBACK_2(OptionLayer::myTouchesMoved, this)	;

	 listener->onTouchesEnded = CC_CALLBACK_2(OptionLayer::myTouchesEnded, this)	;

	 dispatcher->addEventListenerWithSceneGraphPriority(listener, this);
}



void OptionLayer::myTouchesBegan( const std::vector<Touch*>& ts, Event* event )
{
	auto winSize = Director::getInstance()->getWinSize();
	auto iter = ts.begin();

	while (iter != ts.end()) {
		Touch *t = (Touch*)(*iter);
		Point p = t->getLocation();
		// left,当触控操作的起点小于屏幕宽度的一半,说明触控发生在左屏
		if (p.x <= winSize.width / 2) {
			_activityJoystick(p);
		} else {
			// right,否则发生在右屏,会产生“攻击”信号
			_delegator->onAttack();
		}

		iter++;
	}
}

好了,注意lamba函数的建立,一般按照上面建立比较好!



分享到:
评论

相关推荐

    cocos2d-x 3.0

    cocos2d-x 3.0中的cc::Animate类可以轻松管理这些帧,通过`createWithFrames`方法创建动画,并使用`runAction`将动画添加到精灵上。 3. 物理引擎:如果游戏需要更真实的物理效果,比如重力、碰撞检测,可以集成Box...

    cocos2d-x-3.0 类图

    这是我重新弄的cocos2d-x-3.0的类图.之前别人兄台弄的,有些不全面,有些地方错误.我这个可以说是最新的了.每个类添加了中文的详细注解,同时也添加了中文的类名称翻译.这样对cocos2d-x-3.0的框架比较好上手. 有兴趣的...

    Cocos2d-x3.0正式版 练练看 源码

    10. **游戏交互**:文件名“20140823_01_llk_游戏交互.wrf”可能包含一个关于游戏交互的示例或教程,展示了如何在Cocos2d-x3.0中实现玩家与游戏的互动,例如角色控制、菜单操作、游戏事件响应等。 总的来说,Cocos...

    Cocos2d-JS v3.0官方api文档

    Cocos2d-JS v3.0的官方API文档是开发者进行游戏开发的重要参考资料,它详细阐述了框架中的各种功能和接口,帮助开发者高效地理解和使用这个工具集。 Cocos2d-JS API文档包含了以下几个主要部分: 1. **核心模块**...

    Cocos2d-x 3.0的俄罗斯方块代码

    《Cocos2d-x 3.0的俄罗斯方块代码》是一个基于Cocos2d-x游戏引擎3.0及以上版本实现的经典游戏项目。Cocos2d-x是一个广泛使用的开源跨平台2D游戏开发框架,它允许开发者用C++、Lua或JavaScript编写游戏,并在iOS、...

    cocos2d-x-3.0.zip

    在 Cocos2d-x 3.0 版本中,引入了一系列重要的更新和改进,为游戏开发者带来了更加高效、稳定且功能丰富的开发环境。 1. **跨平台支持**:Cocos2d-x 3.0 延续了其强大的跨平台特性,支持 Windows、Mac、Linux、iOS...

    cocos2d-x-3.0别猜百块儿

    在Cocos2d-x中,可以使用定时器(Scheduler)来定时生成方块,通过动作(Action)控制其下落。碰撞检测则可以通过矩形碰撞检测函数或自定义碰撞检测算法来实现,确保玩家在点击黑色方块时能准确识别。 四、用户交互...

    cocos2d-x-3.13.1 spine3.6.zip

    Cocos2d-x提供了一个SpineNode类,它是Cocos2d-x的CCNode的子类,可以直接在场景中添加和管理Spine动画。通过Lua绑定,你可以轻松地调用Spine的API来播放、停止、暂停或重置动画,以及改变动画的速度、时间缩放等...

    cocos2d-x API中文文档

    文档中提到了Cocos2d-x的API风格,特别是从v3.0-beta2版本开始引入的两阶段构造器和静态`create()`函数。这种设计模式使得在C++中,类的构造过程分为两个阶段:第一阶段是设置成员变量的默认值,第二阶段是在`create...

    Cocos2d-x实战:JS卷——Cocos2d-JS开发

    资源名称:Cocos2d-x实战:JS卷——Cocos2d-JS开发内容简介:本书是介绍Cocos2d-x游戏编程和开发技术书籍,介绍了使用Cocos2d-JS中核心类、瓦片地图、物理引擎、音乐音效、数据持久化、网络通信、性能优化、多平台...

    cocos2d-x3.0rc0 中文API

    精灵(Sprite)是cocos2d-x中最基本的2D图形对象,用于展示静态或动态图像。3.0版本的`CCSprite`类提供了丰富的动画支持,如帧动画和精灵批处理,大大提升了游戏性能。中文API中详细解释了如何创建、修改和动画化...

    Cocos2d-x 3.x游戏开发实战pdf含目录

    在Cocos2d-x 3.x中,有丰富的动画支持,如动作(Actions)、时间线(Timeline)等。同时,Cocos2d-x集成了Box2D物理引擎,使开发者能轻松实现物理效果,如碰撞检测、重力模拟等。 游戏中的音频管理也是不可或缺的一...

    Cocos2d-x实战:C++卷(2版)源代码

    在Cocos2d-x中,C++作为主要的编程语言,相比初版,第二版可能涵盖了更多Cocos2d-x的新特性和优化。C++的使用可以提供更好的性能和更直接的内存管理,同时也能充分利用面向对象编程的特性来构建复杂的游戏逻辑。 源...

    Cocos2d-JS-v3.0-API

    4. **事件处理**:Cocos2d-JS 提供了一套完整的事件处理机制,包括触摸、键盘、鼠标事件,以及游戏特定的事件如碰撞检测。 5. **音频管理**:支持背景音乐和音效的播放,提供了简单的音频控制接口。 6. **资源管理...

    cocos2d-x_v3.16安装及环境变量配置文档

    cocos2d-x 是一个开源的游戏开发框架,使用 C++ 语言编写,支持多平台发布,包括 iOS、Android、Windows、macOS、Linux 和 Web。cocos2d-x v3.16 是该框架的一个版本号,本文档主要介绍了该版本的安装流程以及环境...

    cocos2d-x windows vs2010配置

    接下来,把 F:\cocos2d-1.0.1-x-0.9.1\cocos2dx 和 F:\cocos2d-1.0.1-x-0.9.1\CocosDenshion 这两个文件夹里面的全部内容拷贝一份到 D:\cocos2d-xProjects\HelloWorld 中去。 九、设置静态链接库 接下来,打开 F:\...

    经典版本 方便下载 源码 旧版本 3.8 官网找不到了 cocos2d-x-3.8.zip

    12. **扩展性**:cocos2d-x提供了插件系统和扩展API,方便开发者添加自定义功能和第三方库。 在学习和使用cocos2d-x 3.8时,开发者需要注意与最新版本的差异,例如API的变化、新功能的缺失等。同时,由于3.8是旧...

    cocos2d-x-3.1.zip

    总的来说,Cocos2d-x 3.1是游戏开发者学习2D游戏开发的一个重要参考点,虽然它已经不是最新的版本,但其核心概念和机制在后续版本中仍然保持一致,是理解整个Cocos2d-x框架的基础。解压并研究“cocos2d-x-3.1”中的...

    cocos2d-x事件类

    谨记,该事件只能用于cocos2d-x中。 事件发送者需要继承EventDispatcher类 事件接收者需要继承EventHandle类,还需要实现handleEvent方法 事件发送者和事件接收者要在构造函数和析构函数中调用一下方法 事件发送者...

    cocos2d-x 动画工具 Flash2Cocos2d-x 1.3

    同时,该工具还支持自定义事件映射,使Flash中的事件监听器能够正确地触发cocos2d-x中的相应函数,确保游戏交互的一致性。 在压缩包文件"jyinkailej-Flash2Cocos2d-x-8c0deff"中,可能包含了Flash2Cocos2d-x工具的...

Global site tag (gtag.js) - Google Analytics