HarmonyOS 通过 animateTo讲解角度动画效果

本文 我们依旧来说动画

这次 我们来说角度

我们先写一个这样的代码模板

typescript 复制代码
@Entry
@Component
struct Index {

  build() {
    Column({space: 30}) {
      Text("修改元素尺寸")
        .fontSize(38)
        .margin({top:188})
      Image("https://img2.baidu.com/it/u=1814561676,2470063876&fm=253&fmt=auto&app=138&f=JPEG?w=750&h=500")
        .width(200)
        .height(150)

      Button("执行").onClick((event: ClickEvent) => {
        animateTo({
          duration: 3000,
          curve: Curve.Linear,
          //delay: 2000,
          iterations: 3,
          playMode: PlayMode.Alternate,
          onFinish: (()=>{
            console.log("动画结束");
          })
        },() => {
        })
      })
  }
    .width('100%')
    .height('100%')
  }
}

这里 我们放了一个 Image 图片组件 里面是个网图地址

然后 我们还是用按钮定义了一个点击事假 里面用了 animateTo 动画 不过目前 没有写动画是要干嘛的

这里 我们就可以在点击事件中修改角度属性

我们先给 Image 组件加上属性rotate

typescript 复制代码
Image("https://img2.baidu.com/it/u=1814561676,2470063876&fm=253&fmt=auto&app=138&f=JPEG?w=750&h=500")
.width(200)
.height(150)
.rotate({
    angle: 30,
})

rotate 就是设置元素旋转的属性

angle 设置中心点偏转的角度 我们给 30

可以看到 我们的图片 中心就转了一个幅度

然后 我们将他打 rotate 改成

typescript 复制代码
.rotate({
	angle: 30,
	x: 1
})

这里 我们给 x 1的意思是 我们要按x轴去偏转

这样 我们图片偏转的角度 明显就变了

x轴 为面对我们这个上下正方向 90度为一个半圆 那么 我们来一个 80度

我们整个图片 也成了快躺平的一个状态

180度 整个圆 它就整个反过来了

我们改成y轴

typescript 复制代码
rotate({
	angle: 40,
	 y: 1
})

然后是 z轴 她就说 我们最开始看到的这个平面旋转的效果

那么 这里其实 我们控制 angle 就OK了

这里还有个点 例如 我们x y z都打开

那 它是三轴都发生旋转

如果你不想让某个轴转 给0就好了

例如

typescript 复制代码
rotate({
    angle: 40,
	x: 0,
	y: 0,
	z: 1
})

这样 就只有为1的z轴转了

代码最上面 我们写一个状态变量 number 数字类型

来控制 angle 角度属性 然后 默认给0

typescript 复制代码
@State rotateAngle:number = 0;

然后 用 rotateAngle 绑定 旋转角度属性

typescript 复制代码
rotate({
	angle: this.rotateAngle,
	 x: 0,
	 y: 0,
	 z: 1
})

然后 我们将 下面 Button按钮的代码修改如下

typescript 复制代码
Button("执行").onClick((event: ClickEvent) => {
	animateTo({
	 duration: 3000,
	 curve: Curve.Linear,
	 //delay: 2000,
	 iterations: 3,
	 playMode: PlayMode.Alternate,
	 onFinish: (()=>{
	   console.log("动画结束");
	 })
	},() => {
	 this.rotateAngle = 180
	})
})

只需要在箭头函数中 修改 rotateAngle 的值 之前的第一参数配置都是一样的

然后 我们点击按钮 整个动画 他就转起来了

相关推荐
贾伟康39 分钟前
【句匠|15】HarmonyOS ArkTS 本地状态持久化实战:让保存、删除和页面返回后的数据即时一致
harmonyos·arkts·数据持久化·appstorage·preferences
贾伟康4 小时前
【句匠|16】HarmonyOS ArkTS 多设备布局实战:适配手机、平板和 PC/2in1 的窗口变化
harmonyos·arkts·arkui·响应式布局·多设备适配
小雨青年4 小时前
【HarmonyOS 7 平行视界深度实战】03 购物模式怎么实现连续浏览和左右推挤
华为·harmonyos
SuperHeroWu76 小时前
HarmonyOS Dev Assistant (HarmonyOS开发助手)如何打通元服务开发全流程
ai·agent·harmonyos·vs code·元服务·hbuilderx·assistant
熊猫钓鱼>_>6 小时前
用 OHAudioSuite 空间渲染节点搭一座「3D 有声博物馆」——从三种模式到 FreeBuds 头追的实战记录
c++·3d·ai·harmonyos·arkts·audio·ohaudiosuite
OH_TPC6 小时前
HarmonyOS APP开发---"心动卡"社交匹配App,需要用到这个库
harmonyos
光锥智能6 小时前
HUAWEI WATCH 6系列正式发布:鸿蒙AI手表,智慧健康旗舰
人工智能·华为·harmonyos
光锥智能7 小时前
HUAWEI WATCH Ultimate 2 非凡探索推出滑雪登山功能,专业数据助力探索雪域奇境
华为
上学的小垃圾8 小时前
华为eNSP防火墙USG6000V登录管理方式
网络·网络安全·华为
OH_TPC9 小时前
【鸿蒙优选三方库】@react-native-ohos/react-native-gesture-handler:原生级手势识别与处理框架
华为·harmonyos·鸿蒙