主题
触摸行为(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);属性
| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
PressedScale | float | 0.95 | 按压时缩放比例 |
PressedOpacity | float | 0.85 | 按压时透明度 |
PressAnimationDuration | TimeSpan | 150ms | 按压动画时长 |
PressAnimationEasing | IEasingFunction? | null | 动画缓动函数 |
LongPressDuration | TimeSpan | 500ms | 长按触发阈值 |
EnablePressAnimation | bool | true | 是否启用按压动画 |
EnableLongPress | bool | true | 是否启用长按检测 |
IsLongPressed | bool | 只读 | 当前是否长按中 |
IsPressed | bool | 只读 | 当前是否按下 |
事件
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 的区别
| 特性 | TouchBehavior | PointerCapture |
|---|---|---|
| 用途 | 按压视觉反馈 + 长按 | 拖拽/连续跟踪 |
| 自动管理 | 是 | 需手动捕获/释放 |
| 缩放/透明度动画 | 内置 | 无 |
相关文档
- 指针捕获 — 拖拽和连续指针跟踪