1# 运动模糊 2 3设置组件由缩放大小或位移变化引起的运动过程中的动态模糊效果。需要与动画的AnimateParam的onFinish参数配合使用。 4 5> **说明:** 6> 7> 从API version 12开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 8 9## motionBlur 10 11motionBlur(value: MotionBlurOptions) 12 13在当前组件由缩放大小或位移变化引起的运动过程中,增加动态模糊效果。 14 151、不建议在组件内转场、共享元素转场、组件内隐式元素转场、粒子动画场景下使用该属性,否则会有非预期效果。 16 172、该属性需要在开始状态将motionBlur的参数radius设置为0,否则冷启动时会有非预期效果。 18 193、该属性需要与动画的AnimateParam的onFinish参数配合使用,需要在运动模糊动画结束后将motionBlur的参数radius置为0,否则会有非预期效果。 20 214、在使用该属性过程中,不要在使用过程中频繁更改同一个组件的模糊半径,否则会有非预期效果。比如示例中的动画,频繁点击会出现模糊效果偶尔失效的情况。 22 235、运动模糊锚点坐标需要与动画缩放的锚点保持一致,否则会有非预期效果。 24 256、模糊半径建议设置1以内,否则会有非预期效果。 26 27**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 28 29**参数:** 30 31| 参数名 | 类型 | 必填 | 说明 | 32| ------ | ----------------------------------------------- | ---- | ------------------ | 33| value | [MotionBlurOptions](#motionbluroptions对象说明) | 是 | 定义运动模糊参数。 | 34 35## motionBlur<sup>18+</sup> 36 37motionBlur(motionBlur: Optional\<MotionBlurOptions>) 38 39在当前组件由缩放大小或位移变化引起的运动过程中,增加动态模糊效果。与[motionBlur](#motionblur)相比,motionBlur参数新增了对undefined类型的支持。 40 411、不建议在组件内转场、共享元素转场、组件内隐式元素转场、粒子动画场景下使用该属性,否则会有非预期效果。 42 432、该属性需要在开始状态将motionBlur的参数radius设置为0,否则冷启动时会有非预期效果。 44 453、该属性需要与动画的AnimateParam的onFinish参数配合使用,需要在运动模糊动画结束后将motionBlur的参数radius置为0,否则会有非预期效果。 46 474、在使用该属性过程中,不要在使用过程中频繁更改同一个组件的模糊半径,否则会有非预期效果。比如示例中的动画,频繁点击会出现模糊效果偶尔失效的情况。 48 495、运动模糊锚点坐标需要与动画缩放的锚点保持一致,否则会有非预期效果。 50 516、模糊半径建议设置1以内,否则会有非预期效果。 52 53**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。 54 55**参数:** 56 57| 参数名 | 类型 | 必填 | 说明 | 58| ---------- | ---------------------------------------------------------- | ---- | ------------------------------------------------------------ | 59| motionBlur | Optional\<[MotionBlurOptions](#motionbluroptions对象说明)> | 是 | 定义运动模糊参数。<br/>当motionBlur的值为undefined时,维持之前取值。 | 60 61## MotionBlurOptions对象说明 62 63**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 64 65| 名称 | 类型 | 必填 | 说明 | 66| ------------- | ----------------------------------------------------------- | ----- | ------------------------------------------------------------ | 67| radius | number | 是 | 模糊半径,取值范围[0.0, ∞),建议设置1.0以内。 | 68| anchor | [MotionBlurAnchor](#motionbluranchor对象说明) | 是 | 运动模糊锚点坐标。运动模糊锚点坐标设置时需要与动画缩放的锚点保持一致设置。 | 69 70## MotionBlurAnchor对象说明 71 72**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 73 74| 名称 | 类型 | 必填 | 说明 | 75| ------------- | ----------------------------------------------------------- | ----- | ------------------------------------------------------------ | 76| x | number | 是 | 锚点坐标x值,取值范围[0.0, 1.0]。 | 77| y | number | 是 | 锚点坐标y值,取值范围[0.0, 1.0]。 | 78 79## 示例 80 81属性动画状态下添加运动模糊效果。 82```ts 83// xxx.ets 84import { curves } from '@kit.ArkUI'; 85 86@Entry 87@Component 88struct motionBlurTest { 89 @State widthSize: number = 400 90 @State heightSize: number = 320 91 @State flag: boolean = true 92 @State radius: number = 0 93 @State x: number = 0 94 @State y: number = 0 95 96 build() { 97 Column() { 98 Column() { 99 Image($r('app.media.testImg')) 100 .width(this.widthSize) 101 .height(this.heightSize) 102 .onClick(() => { 103 this.radius = 5; 104 this.x = 0.5; 105 this.y = 0.5; 106 if (this.flag) { 107 this.widthSize = 100; 108 this.heightSize = 80; 109 } else { 110 this.widthSize = 400; 111 this.heightSize = 320; 112 } 113 this.flag = !this.flag; 114 }) 115 .animation({ 116 duration: 2000, 117 curve: curves.springCurve(10, 1, 228, 30), 118 onFinish: () => { 119 this.radius = 0; 120 } 121 }) 122 .motionBlur({ radius: this.radius, anchor: { x: this.x, y: this.y } }) 123 } 124 }.width('100%').margin({ top: 5 }) 125 } 126} 127``` 128 129 130