首页 > 其他分享 >鸿蒙3D开发

鸿蒙3D开发

时间:2024-10-17 12:58:53浏览次数:7  
标签:rotate 鸿蒙 效果 旋转 开发 组件 转场 event 3D

需求:

  1. 创建一个按钮。
  2. 按下按钮后,按钮需缩小并向手指方向倾斜。

分析:

  1. 可以使用 button 组件来实现该功能,其他组件也同样适用。
  2. 按下按钮时需利用 .ontouch 事件。
  3. 缩小效果通过 scale 属性的变化实现。
  4. 为了确定手指的方向,我们可以在 .ontouch 事件中获取相关信息,具体包括:
    • event.touches[0].x:手指在 x 轴的位置。
    • event.touches[0].y:手指在 y 轴的位置。
  5. 倾斜效果则通过 rotate 属性来实现。
import curves from '@ohos.curves'

@Entry
@Component
struct Index {
  @State bX: number = 200
  @State bY: number = 200
  @State aScaleX: number = 1
  @State aScaleY: number = 1
  @State aAngle: number = 0
  @State bAngle: number = 0
  @State text: string = ''

  build() {
    Row() {
      Column() {
        Button() {
          Button('旋转按钮)')
            .scale({ x: this.aScaleX, y: this.aScaleY })
            .width(this.bX)
            .height(this.bY)
            .type(ButtonType.Capsule)
            .rotate({
              x: 1,
              y: 0,
              z: 0,
              centerX: '50%',
              centerY: '50%',
              angle: this.aAngle
            })
            .shadow({ radius: 10 })
            .onTouch((event: TouchEvent) => {
              if (event.type === TouchType.Down) {
                this.aAngle = (event.touches[0].y - this.bY * 0.5) * -0.1
                this.aScaleX = 0.9
                this.aScaleY = 0.9
              }
              if (event.type === TouchType.Up) {
                this.aAngle = 0
                this.aScaleX = 1
                this.aScaleY = 1
              }
              if (event.type === TouchType.Move) {
                this.aAngle = (event.touches[0].y - this.bY * 0.5) * -0.1


              }
            })
            .animation({ duration: 300, curve: Curve.FastOutSlowIn })

        }
        .rotate({
          x: 0,
          y: 1,
          z: 0,
          centerX: '50%',
          centerY: '50%',
          angle: this.bAngle
        })
        .onTouch((event: TouchEvent) => {
          if (event.type === TouchType.Down) {

            this.bAngle = (event.touches[0].x - this.bX * 0.5) * 0.1
          }
          if (event.type === TouchType.Up) {

            this.bAngle = 0
          }
          if (event.type === TouchType.Move) {

            this.bAngle = (event.touches[0].x - this.bX * 0.5) * 0.1

          }

        })
        .type(ButtonType.Capsule)
        .backgroundColor(Color.White)

        .width(this.bX * 1.2)
        .height(this.bY * 1.2)

        .animation({ duration: 500, curve: curves.springCurve(1000, 20, 10, 0) })
      }
      .width('100%')
    }
    .height('100%')
  }
}

.rotate属性用于在鸿蒙(HarmonyOS)中对组件进行旋转变换。它可以设置组件在转场时的旋转效果,具体应用如下:

1.Image_NativeModule结构体中的rotate方法

  • OH_PixelmapNative_Rotate:根据输入的角度对图片进行旋转 。
  • 参数:angle(旋转角度)

2.组件转场中的rotate方法

  • rotate(Float32,Float32,Float32,Float32,CJResource,CJResource):设置组件转场时的旋转效果,包括插入时起点和删除时终点的值 。
    • 参数:
      • xyz:坐标值
      • angle:旋转角度
      • centerXcenterY:中心坐标
  • rotate(Float32,Float32,Float32,Float32,Length,Length):设置组件转场时的旋转效果,包括插入时起点和删除时终点的值 。
    • 参数:
      • xyz:坐标值
      • angle:旋转角度
      • centerXcenterY:中心坐标
  • rotate(RotateOptions):设置组件转场时的旋转效果,包括插入时起点和删除时终点的值。
    • 参数:
      • options:旋转效果
  • rotateX(Float32):设置组件绕X坐标的旋转效果,包括插入时起点和删除时终点的值 。
    • 参数:
      • rotateVal:旋转效果
  • rotateX(Int32):设置组件绕X坐标的旋转效果,包括插入时起点和删除时终点的值 。
    • 参数:
      • rotateVal:旋转效果
  • rotateY(Int32):设置组件绕Y坐标的旋转效果,包括插入时起点和删除时终点的值 。
    • 参数:
      • rotateVal:旋转效果
  • rotateY(Float32):设置组件绕Y坐标的旋转效果,包括插入时起点和删除时终点的值 。
    • 参数:
      • rotateVal:旋转效果
  • move(TransitionEdge):指定组件转场时从屏幕边缘滑入和滑出的效果,本质为平移效果,包括插入时起点和删除时终点的值 。
  • opacity(Float64):设置组件转场时的透明度效果,包括插入时起点和删除时终点的值。
    • 参数:
      • number:透明度效果,取值范围:[0, 1]
  • translate(TranslateOptions):设置组件转场时的平移效果,包括插入时起点和删除时终点的值 。
    • 参数:
      • options:平移效果
  • scale(ScaleOptions):设置组件转场时的缩放效果,包括插入时起点和删除时终点的值 。
    • 参数:
      • options:缩放效果
  • rotate(Float32):设置组件转场时的旋转效果,包括插入时起点和删除时终点的值 。
    • 参数:
      • rotateZ:旋转效果
  • rotate(Int32):设置组件转场时的旋转效果,包括插入时起点和删除时终点的值 。
    • 参数:
      • rotateZ:旋转效果 通过以上方法,开发者可以在鸿蒙(HarmonyOS)中灵活地应用旋转变换来实现各种动画和转场效果。

标签:rotate,鸿蒙,效果,旋转,开发,组件,转场,event,3D
From: https://www.cnblogs.com/guangzhiruijie/p/18471840

相关文章

  • Chrome开发者工具不完全指南(四、性能进阶篇)
    https://blog.csdn.net/lisheng19870305/article/details/106507511前言Profiles面板功能的作用主要是监控网页中各种方法执行时间和内存的变化,简单来说它就是Timeline的数字化版本。它的功能选项卡不是很多(只有三个),操作起来比较前面的几块功能版本来说简单,但是里面的数据确......
  • 基于SSM的网上购物系统的设计与开发
    文未可获取一份本项目的java源码和数据库参考。在如今这个信息时代,“网上购物”这种购物方式已经为越来越多的人所接受。在这种背景之下,一个安全稳定并且强大的网络购物平台不可或缺,在这种成熟的市场需求的推动下,在先进的信息技术的支持下,商品产品销售系统应运而生。它可以使......
  • openGauss数据库部署实践(华为云开发者云实验)
    前言数据库课程上了解到openGuass数据库,做完云实验发现实验指导手册有些地方不够细致或者已经与实际的操作步骤有所偏差,遂写一篇博客为其他同学学习提供参考。什么是openGuass?openGauss是一款开源关系型数据库管理系统,由华为公司结合多年数据库经验打造,以高性能、高可用性和高......
  • Delphi:传统与现代交织的开发利器
    在软件开发的浩瀚世界中,Delphi如同一位低调的大师,虽历经岁月洗礼,却依然散发着独特的魅力,并且在当今技术快速发展的时代,展现出令人惊喜的前景。一、Delphi的历史与特点Delphi是由Borland公司推出的一种集成开发环境(IDE),以其高效、快速的开发能力而著称。它使用ObjectPasca......
  • jsp东哈驾校管理系统的设计与实现dy35m(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表学员,教练,报名登记,退学登记,练车预约,考试预约,报考信息,报考反馈,成绩信息开题报告内容一、项目背景随着汽车保有量的不断增加,驾驶培训行业迎来了巨大的发......
  • jsp订餐管理系统的设计与实现3v4h1--(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表用户,厢房信息,厢房预约,菜品分类,特色美食,员工信息,营业统计开题报告内容一、项目背景随着餐饮行业的数字化转型,订餐管理系统成为提升餐厅运营效率、优化顾......
  • jsp动物园管理系统的设计与实现zoejc程序+源码+数据库+调试部署+开发环境
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表饲养员,后勤人员,动物类型,动物信息,食谱定制,物资信息,物资入库,排班申请,排班申请2,工资信息开题报告内容一、研究背景与意义随着城市化进程的加快和公众对......
  • 在Debian系统中安装Vue开发环境
     在Debian系统中安装Vue开发环境,你可以按照以下步骤进行:1.安装Node.js和npmVue.js是基于JavaScript的框架,因此需要先安装Node.js和npm(Node.js的包管理器)。你可以通过以下命令安装:sudoaptupdatesudoaptinstallnodejsnpm2.安装VueCLI 2.安装CLI视图VueCL......
  • 开发一个API接口需要懂的关键技术
    开发一个API接口涉及多种关键技术,这些技术协同工作以确保API的高效、安全和易用。以下是五个关键技术及其简要解释:1. 后端编程语言作用和重要性:后端编程语言用于编写API的服务器端逻辑。它处理客户端请求,执行必要的业务逻辑,并返回响应。选择合适的语言(如Node.js、Python、J......
  • 系统开发基础——开发模型
    目录前言软件开发模型1.瀑布模型2.V模型3.极限编程XP4.增量模型5.喷泉模型6.原型模型7.螺旋模型8.统一过程UP相关题目1.快速原型模型2.增量模型3.喷泉模型4.敏捷开发方法5.极限编程6.螺旋模型前言本笔记为备考软件设计师时的重点知识点笔记,关于系统开发基础——开......