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 90