#夏日挑战赛# OpenHarmony 用eTS 实现一个小动画献给所有的父亲 原创 精华
Buty9147
发布于 2022-6-18 23:11
浏览
1收藏
OpenHarmony 用eTS 实现一个小动画献给所有的父亲
@toc
1.介绍
明天就是父亲节了,祝愿所有的父亲们节日快乐!记得给爸爸打个电话。
效果
视频效果:
https://ost.51cto.com/show/13979
2.代码
页面布局
build() {
Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
Image($r("app.media.circle"))
.width('90%')
.height(300)
.objectFit(ImageFit.Contain)
.opacity(this.opacity)
.rotate({ x: 0, y: 0, z: 1, angle: this.angle })
.scale({ x: this.scale, y: this.scale, z: this.scale })
.overlay(this.typeword, { align: Alignment.Center, offset: { y: -20 } },)
Text(`速度:${this.speed.toFixed(0)}`).width('100%').textAlign(TextAlign.Center).fontSize(22).margin({ top: 50 })
Slider({
value: this.speed,
min: 1,
max: 10,
step: 1,
style: SliderStyle.OutSet
})
.width('90%')
.blockColor(Color.Brown)
.selectedColor(Color.Brown)
.showSteps(true)
.showTips(true)
.onChange((value) => {
this.speed = value
})
Text(`缩放大小:${this.scale.toFixed(1)}`).width('100%').textAlign(TextAlign.Center).fontSize(22).margin({ top: 50 })
Slider({
value: this.scale,
min: 0.1,
max: 2,
step: 0.1,
style: SliderStyle.InSet
})
.width('90%')
.blockColor(Color.Orange)
.selectedColor(Color.Orange)
.showSteps(true)
.showTips(true)
.onChange((value) => {
this.scale = value
})
}
.width('100%')
.height('100%')
}
实现的几个效果
图片由小到大,模拟从远处靠近的效果,同时图片旋转效果,
模拟打字效果,打出父亲节祝福语…
//旋转方法
rotating() {
this.subStr();
var interval = setInterval(() => {
this.angle += this.speed;
if (this.scale < 1.1) {
this.scale += 0.01;
this.opacity += 0.02
} else {
//转回正位
this.angle += (360 - this.angle)
this.speed = 0
//打字效果
this.typing()
clearInterval(interval)
}
}, 100)
console.log(`interval:${this.angle}`);
}
//模拟打字效果
typing() {
var that = this
that.typeword = ''
var i: number = 0
var typing = setInterval(function () {
try {
that.typeword += that.words[i]
if (i == (that.words.length) - 1) {
clearInterval(typing)
console.log(`======clearInterval`)
}
i++
} catch (error) {
console.log("====error:" + error)
}
}, 500)
}
//截取字符串
subStr() {
for (var i = 0;i < this.str.length; i++) {
var s = this.str[i]
this.words.push(s)
}
}
//生命周期函数,Page显示后,触发该回调
aboutToAppear() {
this.rotating()
}
3.总结说明
- 知识点
Slider组件的使用,rotate、scale、overlay 属性的运用 - 图片旋转起来有点像播放的CD,要是再加个音乐就更好了…
4.完整代码
附件下载吧
©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
分类
FatherDay.zip 1.82M 41次下载
已于2022-7-5 18:03:17修改
赞
7
收藏 1
回复
相关推荐
楼主的视频链接:https://ost.51cto.com/show/13979
感谢,已更新。
不错,也可以去看下我的