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

生活中,最使人疲惫的往往不是道路的遥远,而是心中的郁闷;最使人痛苦的往往不是生活的不幸,而是希望的破灭;最使人颓废的往往不是前途的坎坷,而是自信的丧失;最使人绝望的往往不是挫折的打击,而是心灵的死亡。所以我们要有自己的梦想,让梦想的星光指引着我们走出落漠,走出惆怅,带着我们走进自己的理想。

导读:本篇文章讲解 鸿蒙开发-新建Ability与使用image-animator实现图帧动画,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

场景

鸿蒙开发-基础组件介绍及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与使用image-animator实现图帧动画

然后配置ability,这里叫animator

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

点击Finish完成后

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

可以发现其和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修改为

<div class="container">
    <image-animator class="animator" ref="animator" images="{{frames}}" duration="1s" />
    <div class="btn-box">
        <input class="btn" type="button" value="start" @click="handleStart" />
        <input class="btn" type="button" value="stop" @click="handleStop" />
        <input class="btn" type="button" value="pause" @click="handlePause" />
        <input class="btn" type="button" value="resume" @click="handleResume" />
    </div>
</div>

将index.css修改为

.container {
    flex-direction: column;
    justify-content: center;
    align-items: center;
    left: 0px;
    top: 0px;
    width: 454px;
    height: 454px;
}
.animator {
    width: 70px;
    height: 70px;
}
.btn-box {
    width: 264px;
    height: 120px;
    flex-wrap: wrap;
    justify-content: space-around;
    align-items: center;
}
.btn {
    border-radius: 8px;
    width: 120px;
    margin-top: 8px;
}

将index.js修改为

export default {
    data: {
        frames: [
            {
                src: "/common/asserts/heart78.png",
            },
            {
                src: "/common/asserts/heart79.png",
            },
            {
                src: "/common/asserts/heart80.png",
            },
            {
                src: "/common/asserts/heart81.png",
            },
            {
                src: "/common/asserts/heart82.png",
            },
            {
                src: "/common/asserts/heart83.png",
            },
            {
                src: "/common/asserts/heart84.png",
            },
            {
                src: "/common/asserts/heart85.png",
            },
            {
                src: "/common/asserts/heart86.png",
            },
            {
                src: "/common/asserts/heart87.png",
            },
            {
                src: "/common/asserts/heart88.png",
            },
            {
                src: "/common/asserts/heart89.png",
            },
            {
                src: "/common/asserts/heart90.png",
            },
            {
                src: "/common/asserts/heart91.png",
            },
            {
                src: "/common/asserts/heart92.png",
            },
            {
                src: "/common/asserts/heart93.png",
            },
            {
                src: "/common/asserts/heart94.png",
            },
            {
                src: "/common/asserts/heart95.png",
            },
            {
                src: "/common/asserts/heart96.png",
            },
        ],
    },
    handleStart() {
        this.$refs.animator.start();
    },
    handlePause() {
        this.$refs.animator.pause();
    },
    handleResume() {
        this.$refs.animator.resume();
    },
    handleStop() {
        this.$refs.animator.stop();
    },
};

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

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

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

准备图片

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

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

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

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

    data: {
        frames: [
            {
                src: "/common/images/1.png",
            },
            {
                src: "/common/images/2.png",
            },
            {
                src: "/common/images/3.png",
            },
            {
                src: "/common/images/4.png",
            },
        ],
    },

保存后再查看预览

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/136292.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!