• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Class (DynamicSyncScene)
2
3提供组件自定义场景下相关帧率的配置。
4
5> **说明:**
6>
7> - 本模块首批接口从API version 10开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
8>
9> - 本Class首批接口从API version 12开始支持。
10>
11> - 以下接口需先使用UIContext中的requireDynamicSyncScene()方法获取DynamicSyncScene对象,再通过此实例调用对应方法。
12
13## setFrameRateRange<sup>12+</sup>
14
15setFrameRateRange(range: ExpectedFrameRateRange): void
16
17设置期望帧率范围。
18
19最终结果不一定是设置的帧率,会由系统能力做综合决策,尽量满足开发者的设置帧率。
20
21**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
22
23**系统能力:**  SystemCapability.ArkUI.ArkUI.Full
24
25**参数:**
26
27| 参数名      | 类型         | 必填   | 说明   |
28| -------- | ---------- | ---- | ---- |
29| range | [ExpectedFrameRateRange](../apis-arkui/arkui-ts/ts-explicit-animation.md#expectedframeraterange11)| 是    | 设置期望的帧率范围。<br />默认值:{min:0, max:120, expected: 120} |
30
31**示例:**
32
33```ts
34import { SwiperDynamicSyncSceneType, SwiperDynamicSyncScene } from '@kit.ArkUI';
35
36@Entry
37@Component
38struct Frame {
39  @State ANIMATION: ExpectedFrameRateRange = { min: 0, max: 120, expected: 90 };
40  @State GESTURE: ExpectedFrameRateRange = { min: 0, max: 120, expected: 30};
41  private scenes: SwiperDynamicSyncScene[] = [];
42
43  build() {
44    Column() {
45      Text("动画"+ JSON.stringify(this.ANIMATION))
46      Text("跟手"+ JSON.stringify(this.GESTURE))
47      Row(){
48        Swiper() {
49          Text("one")
50          Text("two")
51          Text("three")
52        }
53        .width('100%')
54        .height('300vp')
55        .id("dynamicSwiper")
56        .backgroundColor(Color.Blue)
57        .autoPlay(true)
58        .onAppear(()=>{
59          this.scenes = this.getUIContext().requireDynamicSyncScene("dynamicSwiper") as SwiperDynamicSyncScene[];
60        })
61      }
62
63      Button("set frame")
64        .onClick(() => {
65          this.scenes.forEach((scenes: SwiperDynamicSyncScene) => {
66
67            if (scenes.type == SwiperDynamicSyncSceneType.ANIMATION) {
68              scenes.setFrameRateRange(this.ANIMATION);
69            }
70
71            if (scenes.type == SwiperDynamicSyncSceneType.GESTURE) {
72              scenes.setFrameRateRange(this.GESTURE);
73            }
74          });
75        })
76    }
77  }
78}
79```
80
81## getFrameRateRange<sup>12+</sup>
82
83getFrameRateRange(): ExpectedFrameRateRange
84
85获取期望帧率范围。
86
87**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
88
89**系统能力:**  SystemCapability.ArkUI.ArkUI.Full
90
91**返回值:**
92
93| 类型                  | 说明      |
94| ------------------- | ------- |
95| [ExpectedFrameRateRange](../apis-arkui/arkui-ts/ts-explicit-animation.md#expectedframeraterange11) | 期望帧率范围。|
96
97**示例:**
98
99```ts
100import { SwiperDynamicSyncSceneType, SwiperDynamicSyncScene } from '@kit.ArkUI';
101
102@Entry
103@Component
104struct Frame {
105  @State ANIMATION: ExpectedFrameRateRange = { min: 0, max: 120, expected: 90 };
106  @State GESTURE: ExpectedFrameRateRange = { min: 0, max: 120, expected: 30 };
107  private scenes: SwiperDynamicSyncScene[] = [];
108
109  build() {
110    Column() {
111      Text("动画"+ JSON.stringify(this.ANIMATION))
112      Text("跟手"+ JSON.stringify(this.GESTURE))
113      Row(){
114        Swiper() {
115          Text("one")
116          Text("two")
117          Text("three")
118        }
119        .width('100%')
120        .height('300vp')
121        .id("dynamicSwiper")
122        .backgroundColor(Color.Blue)
123        .autoPlay(true)
124        .onAppear(() => {
125          this.scenes = this.getUIContext().requireDynamicSyncScene("dynamicSwiper") as SwiperDynamicSyncScene[];
126        })
127      }
128
129      Button("set frame")
130        .onClick(() => {
131          this.scenes.forEach((scenes: SwiperDynamicSyncScene) => {
132
133            if (scenes.type == SwiperDynamicSyncSceneType.ANIMATION) {
134              scenes.setFrameRateRange(this.ANIMATION);
135              scenes.getFrameRateRange();
136            }
137
138            if (scenes.type == SwiperDynamicSyncSceneType.GESTURE) {
139              scenes.setFrameRateRange(this.GESTURE);
140              scenes.getFrameRateRange();
141            }
142          });
143        })
144      }
145  }
146}
147```
148