分享

Unity: UIWidgets 简明教程系列【“长按”监听】

 印度阿三17 2020-12-12

Unity: UIWidgets 简明教程

长按监听

注意事项:
本教程部分项目参考了 UIWidgets 官方开发样例。
官方样例只有源代码和完整的项目,没有具体的构建步骤和开发过程中遇到的问题的讲解。本教程即在官方样例的基础上做了一定的修改,并辅以要点的讲解,一步一步地构建项目,比较符合初学者学习的思路和习惯。目前教程持续更新中。

在移动端需要监听多种多样的手势操作,不仅仅局限于点击,手势操作还包括短时间内多次点击、长按、多点触控、滑动等等。本节着眼于实现对“长按”事件的监听。

配置好 UIWidgets 开发环境,新建脚本文件 LongPressTest.cs,输入以下代码:

using Unity.UIWidgets.material;
using Unity.UIWidgets.widgets;
using Unity.UIWidgets.engine;
using Unity.UIWidgets.animation;
using UnityEngine;

namespace UIWIdgetsTutorial
{
public class LongPressTest : UIWidgetsPanel
{
protected PageRouteFactory pageRouteBuilder {
get {
return (RouteSettings settings, WidgetBuilder builder) =>
new PageRouteBuilder(
settings: settings,
pageBuilder: (BuildContext context, Animation<float> animation,
Animation<float> secondaryAnimation) => builder(context)
);
}
}

protected override Widget createWidget()
{
return new WidgetsApp(
home: new LongPressWidget(),
pageRouteBuilder: this.pageRouteBuilder
);
}
}

class LongPressWidget : StatefulWidget
{
public override State createState()
{
return new LongPressWidgetState();
}
}

class LongPressWidgetState : State<LongPressWidget>
{
public override Widget build(BuildContext context)
{
// GestureDetector 包含了多个有关手势识别的属性,如这里的“长按”手势等。
// 通过设置这些属性即可设置各种手势的监听器、回调函数等,非常的方便,并且结构很清晰。
// 运行可以知道这些回调函数的调用顺序为:
// 1. Long Press(也即 onLongPress 事件)
// 2. Long Press Drag Start(也即 onLongPressStart 事件)
// 3. Long Press Drag  Update(如果发生拖动事件,即长按并移动手指或触摸笔等)(也即 onLongPressMoveUpdate 事件)
// 4. Long Press Up(也即 onLongPressUp 事件)
// 5. Long Press Drag Up(也即 onLongPressEnd 事件)
// 或者表述如下:
// onLongPress -> onLongPressStart -> onLongPressMoveUpdate -> onLongPressUp -> onLongPressEnd
return new GestureDetector(
onLongPressStart: (value) => { Debug.Log($"Long Press Drag Start: {value}"); },
onLongPressMoveUpdate: (value) => { Debug.Log($"Long Press Drag Update: {value}"); },
onLongPressEnd: (value) => { Debug.Log($"Long Press Drag Up: {value}"); },
onLongPressUp: () => { Debug.Log($"Long Press Up"); },
onLongPress: () => { Debug.Log($"Long Press"); },
child: new Center(
child: new Container(
width: 200,
height: 200,
color: Colors.blue
)
)
);
}
}
}

这里需要特别注意的是最后的 GestureDetector 的各项属性的设置,通过设置这些属性即可指定各种事件对应的回调函数。对应于“长按”事件,有 onLongPressStart、onLongPressMoveUpdate、onLongPressEnd、onLongPressUp 和 onLongPress 等属性,注释中给出了一些简短的说明。

效果

长按效果
可以清晰地看到各种事件触发的先后顺序。

来源:https://www./content-4-783801.html

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多