• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 焦点轴事件
2
3焦点轴事件是指在与游戏手柄交互时,通过十字按键或者操作杆上报的轴事件,此轴事件通过获得焦点的组件分发并回调给应用。若组件默认可获焦,如Button,则不需要额外设置属性。若组件在默认情况下不可获焦,如Text和Image,可以通过将focusable属性设置为true来启用焦点轴事件。
4
5>  **说明:**
6>
7>  从API Version 15开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
8
9## onFocusAxisEvent
10
11onFocusAxisEvent(event: Callback\<FocusAxisEvent>): T
12
13绑定该方法的组件获焦后,游戏手柄上的摇杆、十字键等的操作会触发该回调。
14
15**原子化服务API:** 从API version 15开始,该接口支持在原子化服务中使用。
16
17**系统能力:** SystemCapability.ArkUI.ArkUI.Full
18
19**参数:**
20
21| 参数名 | 类型                          | 必填 | 说明               |
22| ------ | ----------------------------- | ---- | ------------------ |
23| event  | [FocusAxisEvent](#focusaxisevent对象说明) | 是   | 获得FocusAxisEvent对象。 |
24
25**返回值:**
26
27| 类型 | 说明 |
28| -------- | -------- |
29| T | 返回当前组件。 |
30
31## FocusAxisEvent对象说明
32
33焦点轴事件的对象说明,继承于[BaseEvent](ts-gesture-customize-judge.md#baseevent对象说明8)。
34
35**原子化服务API:** 从API version 15开始,该接口支持在原子化服务中使用。
36
37**系统能力:** SystemCapability.ArkUI.ArkUI.Full
38
39| 名称                                    | 属性类型                                       | 描述                 |
40| ------------------------------------- | ---------------------------------------- | --------------------------- |
41| axisMap                               | Map<[AxisModel](ts-appendix-enums.md#axismodel15), number>     | 焦点轴事件的轴值表。          |
42| stopPropagation                       | Callback\<void>                           | 阻塞事件冒泡传递。            |
43
44## 示例
45
46该示例通过按钮设置了焦点轴事件,当按钮获得焦点时,操控游戏手柄的十字按键或者操作杆将触发onFocusAxisEvent回调。
47
48```ts
49// xxx.ets
50@Entry
51@Component
52struct FocusAxisEventExample {
53  @State text: string = ''
54  @State axisValue: string = ''
55
56  aboutToAppear(): void {
57    this.getUIContext().getFocusController().activate(true)
58  }
59
60  aboutToDisappear(): void {
61    this.getUIContext().getFocusController().activate(false)
62  }
63
64  build() {
65    Column() {
66      Button('FocusAxisEvent')
67        .defaultFocus(true)
68        .onFocusAxisEvent((event: FocusAxisEvent) => {
69          let absX = event.axisMap.get(AxisModel.ABS_X);
70          let absY = event.axisMap.get(AxisModel.ABS_Y);
71          let absZ = event.axisMap.get(AxisModel.ABS_Z);
72          let absRz = event.axisMap.get(AxisModel.ABS_RZ);
73          let absGas = event.axisMap.get(AxisModel.ABS_GAS);
74          let absBrake = event.axisMap.get(AxisModel.ABS_BRAKE);
75          let absHat0X = event.axisMap.get(AxisModel.ABS_HAT0X);
76          let absHat0Y = event.axisMap.get(AxisModel.ABS_HAT0Y);
77          this.axisValue = 'absX: ' + absX + '; absY: ' + absY + '; absZ: ' + absZ + '; absRz: ' + absRz + '; absGas: ' + absGas + '; absBrake: ' + absBrake + '; absHat0X: ' + absHat0X + '; absHat0Y: ' + absHat0Y;
78          this.text = JSON.stringify(event);
79        })
80      Text(this.axisValue).padding(15)
81      Text(this.text).padding(15)
82    }.height(300).width('100%').padding(35)
83  }
84}
85```
86
87游戏手柄摇杆移动时:
88
89![onFocusAxisEvent](figures/onFocusAxisEvent.png)
90