详解鸿蒙Next仓颉开发语言中的动画

布局王
• 阅读 3

大家上午好,今天来聊一聊仓颉开发语言中的动画开发。 仓颉中的动画通常有两种方式,分别是属性动画和显示动画,我们今天以下面的加载动画为例,使用显示动画和属性动画分别实现一下,看看他们有什么区别。 详解鸿蒙Next仓颉开发语言中的动画 显示动画 显示动画是幽蓝君比较习惯使用的方式,它主要依赖animateTo方法来实现。 首先我要现在页面上添加加载图片,并且将它的角度设置为变量。仓颉语言这里有一个奇怪的地方,角度属性只设置angle的话是无效的,必须同时设置z和angle:

@State
var angle:Float32 = 0.0
Column{
    Image(@r(app.media.loading))
    .width(70)
    .height(70)
    .rotate(z:this.angle,angle:this.angle)
}
.width(120)
.height(120)
.alignItems(HorizontalAlign.Center)
.justifyContent(FlexAlign.Center)
.backgroundColor(Color(0, 0, 0, alpha: 0.7))
.borderRadius(10)

然后在添加一个按钮,在按钮的点击事件里进行动画开发:

Button('开始动画')
.width(100)
.onClick({evet =>
    animateTo(
            AnimateParam(
                duration: 2000,
                curve: Curve.Linear,
                delay: 0,
                iterations: -1,
                playMode: PlayMode.Normal,
                onFinish: {=>
                    angle = 0.0
                    }
                ),
                {   =>
                    angle = 360.0
                    })
    })

上面代码中,duration表示动画时长,curve表示动画曲线,delay表示延时,iterations表示循环次数,-1表示无限循环,playMode表示动画模式,这些属性在属性动画中也同样适用。 属性动画 属性动画的各个属性个显示动画都是一样的,只是写法上有区别,给大家演示一下同样的动画使用属性动画的写法:

let animate = AnimateParam(
    duration: 2000,
    curve:Curve.Linear,
    delay: 0,
    iterations: -1,
    playMode: PlayMode.Normal,
    onFinish: { => })
Column{
    Image(@r(app.media.loading))
     .animationStart(animate)
    .width(70)
    .height(70)
    .rotate(z:this.angle,angle:this.angle)
    .animationEnd()
}
.width(120)
.height(120)
.alignItems(HorizontalAlign.Center)
.justifyContent(FlexAlign.Center)
.backgroundColor(Color(0, 0, 0, alpha: 0.7))
.borderRadius(10)
Button('开始')
.onClick({eve =>
    this.angle = 360.0
    })

以上就是关于仓颉语言属性动画和显示动画的相关内容,感谢阅读。##HarmonyOS语言##仓颉##购物#

点赞
收藏
评论区
推荐文章
徐小夕 徐小夕
4年前
用css3实现惊艳面试官的背景即背景动画(高级附源码
我们传统的前端更多的是用javascript实现各种复杂动画,自从有了Css3transition和animation以来,前端开发在动画这一块有了更高的自由度和格局,对动画的开发也越来越容易。这篇文章就让我们汇总一下使用Css3实现的各种特效。这篇文章参考《css揭秘》这本书,并作出了自己的总结,希望能让大家更有收获,也强烈推荐大家看看这本书,你值得拥有
Chase620 Chase620
4年前
CSS3动画之逐帧动画
CSS3动画开发指南第二弹,剥丝抽茧为你解析逐帧动画,同时放送从实战经验中总结出来的逐帧动画使用技巧。什么是逐帧动画要了解CSS3逐帧动画,首先要明确什么是逐帧动画。看一下维基百科中的定义:定格动画,又名逐帧动画,是一种动画技术,其原理即将每帧不同的图像连续播放,从而产生动画效果。简而言之,实现逐帧动画需要两个条件:(1)相关联
Stella981 Stella981
3年前
Android 一共有多少种动画?准确告诉你!
!Android动画(http://obbu6r1mi.bkt.clouddn.com/github/androidanimationset/FnCS.gif)Android动画在开发中是不可或缺的功能,或者说是界面灵动的添加剂。那你是否总结过Android中总共为开发者提供了多少种方式的动画呢?今天就为大家总结归纳一下。!报告老师,我
Wesley13 Wesley13
3年前
H5实现APP和原生方式有多大差距,多少坑?JS才是王道!
纯H5的APP,虽然开发起来要比纯原生开发畅快的多,但最终效果和性能还是和原生比起来还是有很多问题,主要聚集在以下几个方面:1、动画动画有很多种,比如侧边栏菜单的滑入滑出、元素的响应动画、页面切换之间的过场等等,在H5之下的众多实现方法都没有办法达到纯原生的性能。一般有这几种不同的选择:css3动画,javascript动画,原生动画。cs
Stella981 Stella981
3年前
Material Component 动画基础—Spring Animation
不管是在AndroidMaterialDesign,还是Flutter中,Google都在尝试统一动画的行为和实现,在Google看来,动画基本都分为两种,即模拟动画和物理动画,本篇将介绍物理动画,这个概念在Android开发中,涉及的非常少,同时文档也最少,但却是实现很多优雅动画的基础,特别是MDC中封装的一些动画,在很多细节的处理上,都使用到了物理动
Stella981 Stella981
3年前
Android 动画和图形概述
Android提供了非常多强大的API来为UI元素应用动画,及绘制定制的2D和3D图形。下面的部分提供了一个APIs和可用的系统功能的概述,并帮助你确定,对于你的需求而言,哪种方法是最好的。动画Androidframework提供了两种动画系统:属性动画(在Android3.0中引入)和view动画。两种动画系统都是可行的选择,但通常而言
Stella981 Stella981
3年前
Android Property Animation
属性动画系统是一个健壮的框架,它使你几乎能够将任何东西做成动画。你可以定义一个动画来随着时间改变任何对象属性,而不管它是否会被绘制到屏幕上。一个属性动画在一个特定的时间长度中改变一个属性的值(一个对象中的一个成员)。当这个属性会影响到屏幕上绘制的组件时,也就产生了我们看得到的那类动画了。要动画化一些东西,你可以指定你想要动画化的对象属性,比如一个对象在屏幕上
公孙晃 公孙晃
1年前
Bodymovin for Mac
是一款用于导出Web动画的AfterEffects扩展。动画导出为.json文件,使用随插件附带的bodymovin.js播放器。使用Bodymovin插件包含了所有需要呈现动画效果的信息,包括路径、颜色、动画速度和缩放比例等等。开发人员可以将该文件嵌入网
绣鸾 绣鸾
1年前
Moho Pro 14 for Mac(2D动画制作软件)
是一款专业的2D动画制作软件。它具有强大的功能和工具,适用于动画制作师、插画师和设计师。MohoPro14提供了丰富的动画功能,包括骨骼动画、形状插值、帧逐帧动画等。您可以使用骨骼工具来创建复杂的角色动画,通过设置骨骼关节和控制器,实现自然流畅的动作。形状