Skip to content

触摸行为(TouchBehavior) ​

为控件添加按压缩放/透明度动画和长按检测的行为组件。

定义位置:GameUI.Control.Behavior.TouchBehavior

继承链:TouchBehavior → ControlBehavior → IControlBehavior

添加方式 ​

扩展方法(推荐) ​

csharp
// 基础用法
var behavior = control.AddTouchBehavior(
    scaleFactor: 0.95f,           // 按压时的缩放比例
    enablePressAnimation: true,    // 启用按压动画
    enableLongPress: true          // 启用长按检测
);

// 自定义时间参数
var behavior = control.AddTouchBehaviorWithDuration(
    scaleFactor: 0.95f,
    pressAnimationDurationMs: 80,   // 按压动画时长(毫秒)
    longPressDurationMs: 300,       // 长按触发时长(毫秒)
    enablePressAnimation: true,
    enableLongPress: true
);

流式写法 ​

csharp
// 基础
control.TouchBehavior(scaleFactor: 0.9f);

// 带配置回调
control.TouchBehavior(
    configure: tb =>
    {
        tb.LongPressTriggered += (s, e) => ShowContextMenu();
    },
    scaleFactor: 0.95f,
    enableLongPress: true
);

// 预设
control.QuickTouch();       // scaleFactor=0.97, animation=80ms, longPress=400ms
control.EmphasizedTouch();  // scaleFactor=0.90, animation=150ms, longPress=500ms

长按快捷方法 ​

csharp
control.LongPress(() => ShowContextMenu(), durationMs: 500, scaleFactor: 0.95f);

手动添加 ​

csharp
var behavior = new TouchBehavior();
control.AddBehavior(behavior);

属性 ​

属性类型默认值说明
PressedScalefloat0.95按压时缩放比例
PressedOpacityfloat0.85按压时透明度
PressAnimationDurationTimeSpan150ms按压动画时长
PressAnimationEasingIEasingFunction?null动画缓动函数
LongPressDurationTimeSpan500ms长按触发阈值
EnablePressAnimationbooltrue是否启用按压动画
EnableLongPressbooltrue是否启用长按检测
IsLongPressedbool只读当前是否长按中
IsPressedbool只读当前是否按下

事件 ​

csharp
event EventHandler<PointerEventArgs>? LongPressTriggered;  // 长按达到阈值
event EventHandler<PointerEventArgs>? LongPressStarted;    // 同 LongPressTriggered
event EventHandler<PointerEventArgs>? LongPressEnded;      // 长按结束(释放或离开)

典型用法 ​

列表项:点击 + 长按菜单 ​

csharp
var item = new Label(data.Name);
var behavior = item.AddTouchBehavior(enableLongPress: true);
behavior.LongPressTriggered += (s, e) => ShowContextMenu(data);
item.Click(() => SelectItem(data));

按钮反馈 ​

csharp
var button = new Button("确认");
button.QuickTouch();  // 快速缩放反馈
button.Click(() => Confirm());

与 PointerCapture 的区别 ​

特性TouchBehaviorPointerCapture
用途按压视觉反馈 + 长按拖拽/连续跟踪
自动管理是需手动捕获/释放
缩放/透明度动画内置无

相关文档 ​