HarmonyOS Developer之图片帧动画播放器

创建image-animator组件

在pages/index目录下的hml文件中创建一个image-animator组件,css文件中编写组件样式,js文件中引用图片。
在这里插入图片描述

设置image-animator组件属性

添加iteration(播放次数)、reverse(播放顺序)、fixedsize(图片大小是否固定为组件大小)、duration(播放时长)和fillmode(执行结束后的状态)属性,控制图片的播放效果。

<!-- xxx.hml -->
<div class="container"><image-animator class="animator" fixedsize="false" iteration='2' reverse="false" ref="animator" fillmode="none" images="{{frames}}"   duration="5s" />
</div>
/* xxx.css */
.container {width: 100%;height: 100%;flex-direction: column;background-color: #F1F3F5;
}
.animator {width: 500px;height: 500px;
}
// index.js
export default {data: {frames: [{src: 'common/landscape1.jpg',width: '250px',height: '250px',left: '150px',top: '50px',},{src: 'common/landscape2.jpg',width: '300px',height: '300px',left: '150px',top: '100px',},{src: 'common/landscape1.jpg',width: '350px',height: '350px',left: '150px',top: '150px',},{src: 'common/landscape2.jpg',width: '400px',height: '400px',left: '150px',top: '200px',},{src: 'common/landscape3.jpg',width: '450px',height: '450px',left: '150px',top: '250px',},{src: 'common/landscape4.jpg',width: '500px',height: '500px',left: '150px',top: '300px',},],},
};
注:- 如果在images属性中设置了单独的duration属性,在image-animator组件中设置的duration属性无效。- 如果fixedsize属性值设置为true,图片的width 、height 、top 和left属性无效。- 如果reverse属性值设置为false,表示从第1张图片播放到最后1张图片。如果reverse属性值设置为true,表示从最后1张图片播放到第1张图片。

通过开始播放、停止播放等按钮切换图片的播放状态

image-animator组件通过调用start、pause、stop和resume方法控制图片的开始、暂停、停止和重新播放,通过getState方法查询图片的播放状态
在这里插入图片描述

<!-- xxx.hml -->
<div class="doc-page"><image-animator class="img" id="img" images="{{imginfo}}" iteration="2" reverse="{{rev}}" duration="10s"></image-animator><div style="width: 700px;height:450px;margin-top: 40px;flex-direction:column;justify-content:space-around;"><div class="container"><button type="capsule" value="开始播放" onclick="startimg"></button><button type="capsule" value="暂停播放" onclick="pauseimg"></button></div><div class="container"><button type="capsule" value="停止播放" onclick="stopimg"></button><button type="capsule" value="重新播放" onclick="resumeimg"></button></div><div class="container"><button type="capsule" value="获取播放状态" onclick="getimgstate"></button><button type="capsule" value="{{revVal}}" onclick="revimg"></button></div></div>
</div>
/* xxx.css */
.doc-page {width: 100%;height: 100%;flex-direction: column;align-items: center;justify-content: center;background-color: #F1F3F5;
}
.img {width: 600px;height: 600px;border: 3px solid orange;
}
button{width: 260px
}
.container {width: 100%;height: 120px;align-items: center;justify-content: space-around;
}
// index.js
import promptAction from '@ohos.promptAction';
export default {data: {rev:false,imginfo: [{src: 'common/landscape1.jpg',},{src: 'common/landscape2.jpg',},{src: 'common/landscape3.jpg',},{src: 'common/landscape4.jpg',}],revVal: '反向播放'},onInit() {},startimg(e) {this.$element('img').start()},pauseimg(e) {this.$element('img').pause()},stopimg(e) {this.$element('img').stop()},resumeimg(e) {this.$element('img').resume()},getimgstate(e) {promptAction.showToast({message: '当前状态:' + this.$element('img').getState()})},revimg(e) {this.rev = !this.revif (this.rev) {this.revVal = '正向播放'} else {this.revVal = '反向播放'}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/399305.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LVS原理及实例

目录 LVS原理 LVS概念 lvs集群的类型 lvs-nat 解释 传输过程 lvs-dr 解释 传输过程 特点 lvs-tun LVS&#xff08;Linux Virtual Server&#xff09;常见的调度算法 防火墙标记&#xff08;Firewall Marking&#xff09;结合轮询调度 实战案例 lvs的nat模式配置 …

使用Linux实现FTP云盘1

关于FTP服务器 FTP&#xff08;文件传输协议&#xff09;服务器是在互联网上提供文件存储和访问服务的计算机&#xff0c;它们依照FTP 协议提供服务。 FTP是File Transfer Protocol(文件传输协议)。 程序运行&#xff0c;服务端不断接收客户端指令&#xff0c;服务 端可同时处…

提取含有特定字符的行和列grep函数(含有替换)

目录 ①grep提取含有特定字符的列 ②grep提取含有特定字符的行 R语言进行字符的替换和删减gsub&#xff0c;substr函数R语言进行字符的替换和删减gsub&#xff0c;substr函数_r语言数据框字符替换-CSDN博客 ①grep提取含有特定字符的列 在一个dataframe中&#xff0c;需要提…

Element学习(axios异步加载数据、案例操作)(5)

1、这次学习的是上次还未完成好的恶element案例&#xff0c;对列表数据的异步加载&#xff0c;并渲染展示。 ——>axios来发送异步请求 &#xff08;1&#xff09; &#xff08;2&#xff09;在vue当中安装axios &#xff08;注意在当前的项目目录&#xff0c;并且安装完之后…

Xcode 在原生集成flutter项目

笔者公司有一个从2017年就开始开发的iOS和安卓原生项目&#xff0c;现在计划从外到内开始进行项目迁徙。 1》从gitee拉取flutter端的代码&#xff1b;&#xff08;Android报错Exception: Podfile missing&#xff09; 2》替换Xcode里的cocopods里Podfile的路径 然后报警 然后…

Linux从0到1——进程池

Linux从0到1——进程池 1. 进程池的概念2. 进程池实现思路3. 进程池的代码实现3.1 创建管道&#xff0c;创建子进程3.2 封装任务3.3 Work接口3.4 发送任务3.5 回收资源&#xff0c;关闭管道&#xff08;重点&#xff09;3.6 改造CreatChannels接口 4. 完整代码 1. 进程池的概念…

ECMAScript6模板字面量:反引号、${}占位符的使用

ECMAScript 6 中引入了模板字面量&#xff0c;主要通过多行字符串和字符串占位符对字符串进行增强操作。如下&#xff1a; //使用ECMAScript6模板字面量拼接字符串&#xff0c;例如&#xff1a;2024年8月12日 15:38:28 星期一 let dateRet ${Year}年${Month}月${Dates}日 ${H…

lvs、集群

1.集群和分布式 当多个用户当用户访问一个服务器时&#xff0c;服务器server1可能就会崩&#xff0c;假如这时候我们新加一个服务器server2来缓解server1的压力&#xff0c;那么就需要一个调度器lvs来分配&#xff0c;所以现在就是用户的访问就需要通过调度器之后到达服务器&a…

简述MYSQL聚簇索引、二级索引、索引下推

一丶聚簇索引 InnoDB的索引分为两种&#xff1a; 聚簇索引&#xff1a;一般创建表时的主键就会被mysql作为聚簇索引&#xff0c;如果没有主键则选择非空唯一索引作为聚簇索引&#xff0c;都没有则隐式创建一个索引作为聚簇索引&#xff1b;辅助索引&#xff1a;也就是非聚簇索…

KillWxapkg 自动化反编译微信小程序,小程序安全评估工具,发现小程序安全问题,自动解密,解包,可还原工程目录,支持修改Hook,小程序

纯Golang实现&#xff0c;一个用于自动化反编译微信小程序的工具&#xff0c;小程序安全利器&#xff0c;自动解密&#xff0c;解包&#xff0c;可还原工程目录&#xff0c;支持微信开发者工具运行 由于采用了UPX压缩的软件体积&#xff0c;工具运行时可能会出现错误报告&…

在等保测评中,如何平衡技术风险和非技术风险的评估?

在等保测评中平衡技术风险和非技术风险的评估&#xff0c;需要一个综合的方法来确保所有相关的风险都得到适当的考虑。以下是一些关键步骤&#xff1a; 1. 全面风险识别&#xff1a;首先识别所有可能影响组织的风险&#xff0c;包括技术风险&#xff08;如系统漏洞、恶意软件&…

企业大模型落地从0到0.1

现在人工智能里的“大明星”——大模型&#xff0c;正在悄悄改变各行各业。这就像给企业装上了一颗聪明的大脑&#xff0c;能帮助解决各种棘手问题&#xff0c;提升工作效率。今天&#xff0c;我们就来分析下企业如何一步一步让这个“大脑”在自家地盘里真正派上用场&#xff0…

九、OpenCVSharp 中的图像形态学操作

文章目录 简介一、腐蚀1. 腐蚀的原理和数学定义2. 结构元素的形状和大小选择3. 腐蚀操作的代码实现和效果展示二、膨胀1. 膨胀的概念和作用2. 与腐蚀的对比和组合使用(如开运算、闭运算)三、开运算1. 开运算的定义和用途(去除小的明亮区域)2. 开运算在去除噪声和分离物体方…

数据结构--树与二叉树

数据结构分类 集合 线性结构(一对一) 树形结构(一对多) 图结构(多对多) 数据结构三要素 1、逻辑结构 2、数据的运算 3、存储结构&#xff08;物理结构&#xff09; 树的概念 树的分类 满二叉树和完全二叉树 二叉排序树 平衡二叉树 二叉树分类总结 二叉树的存储结构 …

Element-UI自学实践

概述 Element-UI 是由饿了么前端团队推出的一款基于 Vue.js 2.0 的桌面端 UI 组件库。它为开发者提供了一套完整、易用、美观的组件解决方案&#xff0c;极大地提升了前端开发的效率和质量。本文为自学实践记录&#xff0c;详细内容见 &#x1f4da; ElementUI官网 1. 基础组…

Linux os下借助Qt+libvlc是实现多路拉取摄像头rtsp数据流并实时显示

前言 应客户方的一个实际项目需求&#xff0c;需要在Linux操作系统下拉取多路摄像头的RTSP数据流并实时显示。 该项目的硬件平台基于飞腾2000四核处理器与景嘉微显卡&#xff0c;搭载了Kylin V10操作系统。 当前景嘉微GPU最多支持同时连接16路摄像头&#xff0c;拉取1920x108…

在等保测评中,如何平衡资产识别的全面性和准确性,避免过度关注某些资产而忽视其他潜在风险?

在等保测评中平衡资产识别的全面性和准确性&#xff0c;避免过度关注某些资产而忽视其他潜在风险&#xff0c;可以通过以下策略实现&#xff1a; 1. 全面审计&#xff1a;确保进行一次全面的审计&#xff0c;包括所有类型的资产&#xff0c;避免遗漏任何关键组件。 2. 风险导…

上海亚商投顾:三大指数小幅调整,两市成交不足5000亿

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 大指数昨日窄幅震荡&#xff0c;临近尾盘小幅下挫。环保板块开盘大涨&#xff0c;永清环保、清研环境、中兰环…

OpenCV图像滤波(10)Laplacian函数的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 功能描述 计算图像的拉普拉斯值。 该函数通过使用 Sobel 运算符计算出的 x 和 y 的二阶导数之和来计算源图像的拉普拉斯值&#xff1a; dst Δ src ∂…

LeetCode刷题笔记第191题:位1的个数

LeetCode刷题笔记第191题&#xff1a;位1的个数 题目&#xff1a; 想法&#xff1a; 通过位运算判断二级制形式中有多少个1&#xff0c;代码及解释如下&#xff1a; class Solution:def hammingWeight(self, n: int) -> int:return sum(1 for i in range(32) if n & …