当前位置:   article > 正文

鸿蒙开发-新建Ability与使用image-animator实现图帧动画_绘制帧鸿蒙

绘制帧鸿蒙

场景

鸿蒙开发-基础组件介绍及chart组件使用:

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/118333539

在上面学习了基础组件的使用流程后,下面介绍image-animator这个组件。

注:

博客:
https://blog.csdn.net/badao_liumang_qizhi
关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。

Ability

Ability是应用所具备能力的抽象,也是应用程序的重要组成部分。一个应用可以具备多种能力(即可以包含多个Ability),HarmonyOS支持应用以Ability为单位进行部署。Ability可以分为FA(Feature Ability)和PA(Particle Ability)两种类型,每种类型为开发者提供了不同的模板,以便实现不同的业务功能。

FA支持Page Ability:
Page模板是FA唯一支持的模板,用于提供与用户交互的能力。一个Page实例可以包含一组相关页面,每个页面用一个AbilitySlice实例表示。

PA支持Service Ability和Data Ability:
Service模板:用于提供后台运行任务的能力。
Data模板:用于对外部提供统一的数据访问抽象。
在配置文件(config.json)中注册Ability时,可以通过配置Ability元素中的“type”属性来指定Ability模板类型,示例如下。

其中,“type”的取值可以为“page”、“service”或“data”,分别代表Page模板、Service模板、Data模板。为了便于表述,后文中我们将基于Page模板、Service模板、Data模板实现的Ability分别简称为Page、Service、Data。

详细介绍可以参照其官方文档

https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ability-ability-overview-0000000000029852

在js上右键新建ability-Empty Page Ability(JS)

然后配置ability,这里叫animator

点击Finish完成后

可以发现其和default是同级的。

image-animator图片帧动画播放器

image-animator 图片帧动画播放器,多图帧动画的构建能力一直以来都是基于 Android 安卓系统使用 Java or C#语言进行开发的,而华为鸿蒙系统将「图片帧动画播放器」引入到了 JS 前端开发领域,这无疑是一次巨大的突破,这也代表着华为鸿蒙系统对其图片渲染能力的巨大自信。

注意如果照片使用云端路径的话,需要配置权限

ohos.permission.INTERNET(如果使用云端路径)

官方文档地址:

https://developer.harmonyos.com/cn/docs/documentation/doc-references/js-components-basic-image-animator-0000001050066126

然后按照其官方文档指示,分别将animator下的pages下index下index.hml修改为

  1. <div class="container">
  2.     <image-animator class="animator" ref="animator" images="{{frames}}" duration="1s" />
  3.     <div class="btn-box">
  4.         <input class="btn" type="button" value="start" @click="handleStart" />
  5.         <input class="btn" type="button" value="stop" @click="handleStop" />
  6.         <input class="btn" type="button" value="pause" @click="handlePause" />
  7.         <input class="btn" type="button" value="resume" @click="handleResume" />
  8.     </div>
  9. </div>

将index.css修改为

  1. .container {
  2.     flex-direction: column;
  3.     justify-content: center;
  4.     align-items: center;
  5.     left: 0px;
  6.     top: 0px;
  7.     width: 454px;
  8.     height: 454px;
  9. }
  10. .animator {
  11.     width: 70px;
  12.     height: 70px;
  13. }
  14. .btn-box {
  15.     width: 264px;
  16.     height: 120px;
  17.     flex-wrap: wrap;
  18.     justify-content: space-around;
  19.     align-items: center;
  20. }
  21. .btn {
  22.     border-radius: 8px;
  23.     width: 120px;
  24.     margin-top: 8px;
  25. }

将index.js修改为

  1. export default {
  2.     data: {
  3.         frames: [
  4.             {
  5.                 src: "/common/asserts/heart78.png",
  6.             },
  7.             {
  8.                 src: "/common/asserts/heart79.png",
  9.             },
  10.             {
  11.                 src: "/common/asserts/heart80.png",
  12.             },
  13.             {
  14.                 src: "/common/asserts/heart81.png",
  15.             },
  16.             {
  17.                 src: "/common/asserts/heart82.png",
  18.             },
  19.             {
  20.                 src: "/common/asserts/heart83.png",
  21.             },
  22.             {
  23.                 src: "/common/asserts/heart84.png",
  24.             },
  25.             {
  26.                 src: "/common/asserts/heart85.png",
  27.             },
  28.             {
  29.                 src: "/common/asserts/heart86.png",
  30.             },
  31.             {
  32.                 src: "/common/asserts/heart87.png",
  33.             },
  34.             {
  35.                 src: "/common/asserts/heart88.png",
  36.             },
  37.             {
  38.                 src: "/common/asserts/heart89.png",
  39.             },
  40.             {
  41.                 src: "/common/asserts/heart90.png",
  42.             },
  43.             {
  44.                 src: "/common/asserts/heart91.png",
  45.             },
  46.             {
  47.                 src: "/common/asserts/heart92.png",
  48.             },
  49.             {
  50.                 src: "/common/asserts/heart93.png",
  51.             },
  52.             {
  53.                 src: "/common/asserts/heart94.png",
  54.             },
  55.             {
  56.                 src: "/common/asserts/heart95.png",
  57.             },
  58.             {
  59.                 src: "/common/asserts/heart96.png",
  60.             },
  61.         ],
  62.     },
  63.     handleStart() {
  64.         this.$refs.animator.start();
  65.     },
  66.     handlePause() {
  67.         this.$refs.animator.pause();
  68.     },
  69.     handleResume() {
  70.         this.$refs.animator.resume();
  71.     },
  72.     handleStop() {
  73.         this.$refs.animator.stop();
  74.     },
  75. };

然后选中index.hml点开预览按钮

可以看到此时图片有在动,但是因为图片没有,所以没有动画效果。

准备图片

在阿里巴巴矢量图上找到心型图标,然后选择大小不同的,使用截图软件截取同样大小尺寸的一组图。

然后将这一组图放在common下images目录下

然后修改Index.js中图片路径的代码

  1.     data: {
  2.         frames: [
  3.             {
  4.                 src: "/common/images/1.png",
  5.             },
  6.             {
  7.                 src: "/common/images/2.png",
  8.             },
  9.             {
  10.                 src: "/common/images/3.png",
  11.             },
  12.             {
  13.                 src: "/common/images/4.png",
  14.             },
  15.         ],
  16.     },

保存后再查看预览

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号