关于按钮点击事件的PointerEventData属性详解

PointerEventData .button

触发此事件的按钮

PointerEventData.clickCount

计算按钮连击次数,间隔时间很短

public class ExampleClass : MonoBehaviour, IPointerDownHandler
{
    public void OnPointerDown(PointerEventData eventData)
    {
        int i = eventData.clickCount;
        Debug.Log(i);
    }
}

PointerEventData .clickTime

上次发送点击事件的时间。这个时间不是每一次点击都是从新开始计算,会根据上一次的时间继续累加

PointerEventData.delta

自上次更新以来的指针坐标增量变化变化。
没有用到,不知道干嘛的

public class ExampleScript : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler
{
    private float timeCount;
    private Vector2 deltaValue = Vector2.zero;

    public void OnBeginDrag(PointerEventData data)
    {
        deltaValue = Vector2.zero;
    }

    public void OnDrag(PointerEventData data)
    {
        deltaValue += data.delta;
        if (data.dragging)
        {
            timeCount += Time.deltaTime;
            if (timeCount > 0.5f)
            {
                timeCount = 0.0f;
                Debug.Log("delta: " + deltaValue);
            }
        }
    }

    public void OnEndDrag(PointerEventData data)
    {
        deltaValue = Vector2.zero;
    }
}

PointerEventData .dragging
返回bool值,判断当前按钮是否在拖动

PointerEventData .enterEventCamera
与最后一个OnPointerEnter事件关联的摄像头。
这个主要用于多相机混合的时候判断当前按钮的事件是由哪个相机触发的.

PointerEventData .hovered
悬停堆栈中的对象列表。
目前发现只能触发该脚本物体上第一个射线检测到的子物体

public void OnPointerEnter (PointerEventData eventData)
    {
        for (int i = 0; i < eventData.hovered.Count; i++)
        {
            Debug.Log(eventData.hovered[i].name);
        }
    }

PointerEventData.lastPress
最后一次按下事件的物体,这个会记录上一次点击到的按钮信息,如果是第一打开面板,没有点击过按钮,这个会报空

PointerEventData.pointerCurrentRaycast
包含当前响应射线检测事件的信息,例如这个gameobject,ui层级等

PointerEventData .pointerDrag
当前触发 OnDrag事件的物体,设置为空的时候不再触发OnDrag和 OnEndDrag .

PointerEventData.pointerEnter
当前触发OnPointerEnter的对象,一般鼠标移动到ui上的时候会触发这个事件,对应的是OnPointerExit,鼠标移出的时候

PointerEventData .pointerId
鼠标点击时的id
-1,-2,-3分别对应鼠标左键,右键和中键,手机端触摸时也有相应的id

PointerEventData .pointerPress
接收OnPointerDown的游戏物体

PointerEventData .pointerPressRaycast
指针按下时响应射线检测的ui,在一次点击事件中不会改变,pointerCurrentRaycast这个会随着拖动等操作变化

PointerEventData .position
当前指针的位置,返回一个vector2向量,这个值是一个屏幕坐标,左下角为原点(0,0),右上角为(屏幕宽,屏幕高),这个屏幕是根据当前分辨率来的

PointerEventData .pressEventCamera
与最后一个OnPointerPress事件关联的摄像头,当没有接收OnPointerDown的游戏物体会报空

PointerEventData.pressPosition
按下的时候的指针位置,同样的一次点击事件只有一个

PointerEventData .rawPointerPress
当前执行事件中的物体,即使这个物体不在能够触发事件,例如关闭或者被销毁(没用过)

PointerEventData .scrollDelta
自上次更新以来的滚动量(没用过)

原文地址:https://www.cnblogs.com/Simon-Lin/p/11207321.html

时间: 2024-10-19 23:46:37

关于按钮点击事件的PointerEventData属性详解的相关文章

Android 触摸事件 点击事件的分发机制 详解三---责任链模式

前面两节  我们讲述了 android 点击事件的分发流程.其实大家可以细细体会一下,这个分发的过程 始终是从顶层到下层.一层一层的按照顺序进行. 当然了,传到哪一层停止,我们可以通过重写某些方法来完成. 这个地方 android的开发人员很好的利用了 责任链模式来完成这边代码的编写. 下面我们就来讲一下 责任链模式到底是什么.以及如何运用. 大家知道 一个软件公司的基本架构就是 程序员----leader---project manager---boss 这种基础架构. 我们一般都会有team

Android 触摸事件 点击事件的分发机制 详解二

现在我们来看看 事件分发的流程.view group 怎么传递给view的. 首先自定义一个layout 1 package com.example.testtouch; 2 3 import android.content.Context; 4 import android.util.AttributeSet; 5 import android.util.Log; 6 import android.view.MotionEvent; 7 import android.widget.Linear

Android 触摸事件 点击事件的分发机制 详解

最近发现团队里有些员工在做一些自定义控件的时候感觉比较吃力.尤其是做触摸事件这种东西的时候.很多人对机制并不理解.因为百度出来的东西都太理论化了.确实不好理解. 今天带大家坐几个小demo.帮助理解一下. 先从简单的view 的事件分发机制开始解释. 我们首先自定义一个工程 package com.example.testtouch; import android.app.Activity; import android.os.Bundle; import android.util.Log; i

Android Day01-Android按钮点击事件的4种写法

按钮点击事件,说白了就一个方法,setOnClickListener(OnClickListener). 只要传递的参数只要是OnClickListener接口的子类即可,很容易想到的2种实现方式就是匿名内部类和定义一个类实现这个接口.另外还有2种实现方法,有必要着重讲一下: 1.让Activity自身实现OnClickListener接口,传递setOnClickListener参数用this. 然后在onClick(View v)方法中,判断事件源id. switch(v.getId())

Objective-C:模拟按钮点击事件理解代理模式

OC中的协议(Protocol)和和.NET中的接口(Interface)类似,简单来讲,就是一系列方法的列表,其中声明的方法可以被任何类实现.不同的是,在.NET中,如果某个类实现了一个接口,就必须实现这个接口中声明的所有方法:但在OC中,可以不实现协议中声明的所有方法,需要用到某些功能,就去实现对应的方法即可. 这种模式一般称为代理模式.在iOS和OS X开发中,Apple采用了大量的代理模式来实现MVC中View(UI控件)和Controller(控制器)的解耦. 监听思想:如果想让某个对

Android实现Button按钮点击事件监听的几种方式

工作中的项目通常有多个人一起开发,而每个人都有每个人的代码风格,不注重代码规范通常是前人挖坑,后人采坑,降低项目开发效率及加大维护难度,这里分享几种安卓按钮点击事件监听的实现方式. 方式一:直接在Activity中实现View.OnClickListener接口,重写onClick方法,提供所有按钮监听事件入口.这是实际项目中最常用的方式,尤其在页面有多个按钮的情况下比较适用. package com.example.myapp; import android.app.Activity;impo

【转】Android开发20——单个监听器监听多个按钮点击事件

原文网址:http://woshixy.blog.51cto.com/5637578/1093936 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://woshixy.blog.51cto.com/5637578/1093936 一.单个按钮点击事件的监听 方法一 /** * 从网络上获取图片 * * @author 徐越 * */ public class MainActivity extends Activity { pri

android 按钮点击事件

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBo

监听按钮点击事件的三种方式实现及调试信息输出的三种方式实现

监听按钮点击事件的三种方式实现: 1.匿名内部类 2.外部独立类 3.接口实现 package com.example.button; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.View;