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