`
yangping_Account
  • 浏览: 192754 次
  • 性别: Icon_minigender_1
  • 来自: 无锡
社区版块
存档分类
最新评论

对触屏事件追加讲解,解决无法触发ccTouchMoved事件

 
阅读更多

 

原文地址:http://blog.csdn.net/xiaominghimi/article/details/6671077


上一章节中介绍了,如何利用两种方式对用户触屏进行监听,那么今天要重点讲解一个问题;

要讲的问题主要是在使用注册监听(事件分配方式监听触屏)中的问题,上一章节中说过,此种方式首先要注册:如下代码:


//注册独立触摸事件  

[[CCTouchDispatcher sharedDispatcher] addTargetedDelegate:self priority:0 swallowsTouches:YES];  


那么如果多个注册监听的话,可以根据优先级(priority)参数进行设置,此参数的值越大,优先级越低,假设有XX与YY注册了监听,如果XX优先级>YY的话,那么首先会进入XX的监听函数;

使用上面的方式进行监听的话,会进行监听以下这几个事件:


- (BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event  

{  

    return NO;  

}  

  

- (void)ccTouchMoved:(UITouch *)touch withEvent:(UIEvent *)event  

{     

}  

  

- (void)ccTouchEnded:(UITouch *)touch withEvent:(UIEvent *)event  

{  

  

}  

如果XX中的ccTouchBegan函数中返回Yes的话,就不会响应其他监听的(YY)中重写的监听函数;这个上一章节中介绍过;但是要说的也正是这里,如果你想要XX与YY都监听事件,那么两个都可以在ccTouchBegan中返回NO,但是如果你想在处理YY或者XX中的ccTouchMoved移动事件函数中的话,你会发现XX与YY都不会响应其函数,原因是,当你retrun NO;的时候虽然执行了ccTouchBegan与return之间的代码,但是你return NO其实就是告诉cocos2d放弃此次事件处理,让cocos2d继续将触屏事件分配给其他注册过的类去处理监听,直到结束或者cocos2d获取到return true为止;

那么解决的方案:比如你想监听YY类中的ccTouchMoved事件,那么为了不影响XX中的监听ccTouchBegan事件,你应该让XX类在注册监听的时候让其优先级调整高于YY类,并且XX类中ccTouchBegan函数return NO,那么当用户触屏后,首先进入XX类中处理事件,然后会(因为XX类return NO)进入YY类,那么在YY类的ccTouchBegan函数中因为return YES;这样cocos2d就能响应ccTouchMoved函数了;

如果说你想让XX与YY类都响应ccTouchMoved函数,至少我利用此种事件分配的方式无法实现,不知道是不是cocos2d的1.0版本遗留的BUG还是其他原因,今天遇到所以拿出来跟大家分享;

OK,该睡觉了,晚安大家~撒乐个油!~~~~~~

分享到:
评论

相关推荐

    事件处理机制之触屏事件.

    它接收三个参数:目标触屏事件委托、优先级和是否吞噬触摸事件。当设置为吞噬事件时,一旦该委托处理了事件,就不会再将事件传递给其他委托。 2. 触屏事件的三种类型: - ccTouchBegan():当用户首次接触屏幕时...

    cocos2d-x 触摸事件 讲解

    ### cocos2d-x 触摸事件讲解 在游戏开发领域,特别是移动平台上的游戏开发,交互体验至关重要。本文将深入探讨cocos2d-x框架下的触摸事件处理机制,旨在帮助开发者更好地理解和掌握如何通过cocos2d-x实现高质量的...

    【iOS-Cocos2d游戏开发】触屏事件处理机制

    本篇文章将详细讲解Cocos2d游戏开发中的触屏事件处理机制,帮助你理解如何利用这个框架来响应用户的触摸操作。 触屏事件处理在iOS游戏开发中至关重要,因为它直接决定了游戏的交互性和用户体验。Cocos2d中的触摸...

    项目总结之触摸问题分析1

    在游戏开发中,触摸事件的正确处理至关重要,因为它们直接影响玩家与游戏的交互体验。本文主要探讨了在项目中遇到的触摸问题以及...在开发过程中,真机测试和对触摸事件的精细化管理是避免和解决这些问题的关键步骤。

    cocos2d事件响应总结

    - 解决方案之一是在不需要进一步处理触摸事件的情况下,手动“吃掉”事件,即从触摸集合中移除相应的对象。 2. **目标协议的特点** - 目标协议支持“吃掉”事件的功能,可以有效地控制触摸事件的传递。 - `...

    Cocos2d-x触摸事件实例

    本实例将深入讲解如何在Cocos2d-x中处理触摸事件,包括单点触摸和多点触摸。 首先,为了使场景能够接收触摸事件,我们需要在`init`方法中开启触摸功能,通过调用`setTouchEnabled(true)`。这样,当我们触摸屏幕时,...

    基于cocos2d的target触摸,父子精灵节点的demo

    在Cocos2d中,我们通常通过实现`ccTouchBegan`, `ccTouchMoved`, `ccTouchEnded`等触摸事件回调函数来定义对触摸事件的处理逻辑。 触摸事件处理机制是Cocos2d中用户交互的关键部分。每个触摸事件会有一个触摸对象,...

    Cocos2D游戏之旅(三):卡牌翻转效果2(只有当鼠标点中卡牌才翻转)

    在Cocos2D中,我们通常使用`ccTouchBegan`、`ccTouchMoved`和`ccTouchEnded`这三个触摸事件来处理用户的触摸操作。在这个案例中,我们需要关注的是`ccTouchBegan`,因为只有当用户触摸到卡牌时,卡牌才应该开始翻转...

    cocos2d摇杆控制源代码

    这通常通过`ccTouchBegan`、`ccTouchMoved`和`ccTouchEnded`这三个方法实现,它们分别对应于触摸开始、触摸移动和触摸结束的事件。 2. **坐标系统**:cocos2d有自己的坐标系统,通常是左下角为原点,向右和向上为正...

    cocos2d碰撞检测代码

    `ccTouchBegan`、`ccTouchMoved`和`ccTouchEnded`是处理触摸事件的主要方法,这些方法在`Layer`或`Scene`类中重写,用于监听用户的手指触摸屏幕的动作。在`ToutchTest`这个项目中,我们可以看到如何结合这些触摸事件...

    iOS开发中使用cocos2d添加触摸事件的方法

    在iOS游戏开发中,cocos2d是一个非常流行的2D游戏引擎,它为开发者提供了丰富的功能,包括处理触摸事件。本文将深入探讨如何在cocos2d中添加和管理触摸事件,以便创建交互性强的游戏体验。 首先,为了让CCLayer...

    飞镖扎气球完整源码

    - **触摸事件处理**:当玩家触摸屏幕时,`ccTouchBegan`、`ccTouchMoved`和`ccTouchEnded`事件会被触发,实现飞镖的发射和轨迹控制。 - **物理引擎**:虽然描述中未明确提及,但可能使用Cocos2D的内置物理引擎(如...

    IOS应用源码之Cocos2dJoystickTest.rar

    Cocos2dJoystickTest项目的核心就是演示了如何设计和实现这样一个虚拟摇杆,让玩家能够在触摸屏上进行直观的移动控制。 首先,该项目会包含一系列的源代码文件,如`.m`和`.h`文件,它们是Objective-C编写的。`.m`...

    IOS应用源码——xemus-cocos2d-GestureRecognizers-c87d379.rar

    在实现手势识别时,我们需要继承自CCNode的类来添加手势识别器,并重写其`ccTouchBegan`, `ccTouchMoved`, `ccTouchEnded`等触摸事件处理方法。 1. **轻拍手势(Tap)**:通过`UITapGestureRecognizer`来实现,当...

    cocos2d-x 的CCControl控件的示例

    2. 实现触控事件处理函数,比如`ccTouchBegan`, `ccTouchMoved`, `ccTouchEnded`,这些函数会在用户触摸屏幕时被调用。 3. 将CCControl对象添加到场景中,并设置其位置和大小。 4. 使用`...

    带触控输入框

    3. **触控事件处理**:为了实现触控输入,我们需要监听触摸事件,如`ccTouchBegan`、`ccTouchMoved`和`ccTouchEnded`。当用户点击输入框时,可以切换到文本输入模式;在输入完成后,可以通过`ccTouchEnded`事件进行...

    摇杆函数及资源

    3. 实现触摸事件监听器:Cocos2d-x提供了触摸事件处理机制,如`ccTouchBegan()`, `ccTouchMoved()`, 和`ccTouchEnded()`。在你的游戏层类中实现这些方法,以便在用户触摸摇杆时获取输入信息。 4. 更新摇杆位置:在`...

    cocos2d 画线的小程序

    在cocos2d中,可以使用`ccTouchBegan`、`ccTouchMoved`和`ccTouchEnded`三个方法来处理触摸开始、移动和结束的事件。当用户触摸屏幕并移动时,我们可以在`ccTouchMoved`中记录轨迹点,然后在`ccTouchEnded`时绘制出...

    cocos2d 游戏菜单设置v1

    4. iOS事件处理:理解如何在Cocos2D中处理触摸事件,如`ccTouchBegan`、`ccTouchMoved`和`ccTouchEnded`。 5. 自定义动画:如何通过编写自定义的`CCAction`子类来创建独特的动画效果。 通过实践这个项目,你可以...

    Cocos2d添加ZJoystick遥控杆所需源文件和图片

    ZJoystick是一个自定义的虚拟操纵杆组件,适用于移动设备或触摸屏界面,允许用户通过滑动手指来控制游戏对象的移动和方向。本篇文章将深入探讨如何在Cocos2d项目中集成ZJoystick,以及涉及到的相关技术点。 首先,...

Global site tag (gtag.js) - Google Analytics