首页 > 其他分享 >客户端开发工作总结

客户端开发工作总结

时间:2023-11-29 14:25:04浏览次数:23  
标签:总结 界面 元素 开发 UI 冒泡 2.1 客户端

1. 动机

在长达8年的前端工作经验后,发现还是不知道想做啥。自己对技术的掌握还是停留在对数据的展示和存储上。因此先对之前的工作中用到的知识做一个抽象的总结,再思考自己应该去掌握什么技术,又想学什么技术。

2. 认知

客户端开发主要工作即开发UI(user interface),与用户交互的界面。软件呈现给用户看到的所有元素,和可操作功能。

2.1 界面的显示/渲染

2.1.1 布局

布局中组要是有一些通用的布局规则,如上中下布局,上下布局等。布局关键在于定位大元素的所在位置。其中网页中很常见。在游戏开发中,通常不用程序布局,由美术或策划设计出各个UI位置即可。

其中具体元素位置的定位则涉及到界面中的关键概念,即绝对相对概念

2.1.2 绝对

绝对定位将屏幕看成一个笛卡尔坐标系的某个象限。如以左上角为原点时,程序操作元素锚点(用于定位和旋转的点)的坐标值,实现绝对定位。像元素的绝对大小(宽高)也能涵盖其中,即有固定的宽高。

2.1.3 相对

顾名思义,即相对于什么来定位。如屏幕的左边,或某个元素的某条边。和相对的元素大小,如占比屏幕百分比,相对大小在2Dui中较常用,3D中感觉修改摄像机的缩放即可了。

常见的有:

  居中、上下左右对齐

2.1.4 事件机制

最常见的按钮点击事件,通过用户操作而触发接收了事件的函数。

原理是根据鼠标位置,与2D元素是否相交判断是否操作了某个元素,3D元素则可以根据摄像机和点击位置发出摄像来检测。

2.1.5 常用元素

按钮、列表、文本框

2.1.6 渲染分层

为什么要分层,分层可以显示出元素之间的遮挡关系。

2.1.7  冒泡机制

因为元素有可能被遮挡,当点击某个元素后,被这个元素遮挡的元素也想获得事件时则通过冒泡来实现了。我想到个形象的解释法:如同你在海底游泳,我头顶上有只螃蟹,被碰到就会吐泡泡,另一个游在螃蟹头上的人则可以根据螃蟹是否冒泡来判断我是否摸过螃蟹。用GDI渲染2D界面时,则需要遍历先渲染的每一层的元素来触发冒泡。web上不知道是不是这样实现的,感觉挺复杂的。3D感觉用射线就挺方便的。

 

2.2 元素从哪来,界面的显示原理

2.2.1 网页界面

即我们编写的HTML

2.2.2 GDI绘制的界面

在DC(模拟的一个坐标系,带有画笔,读图等功能)中用GDI的工具绘制的图形或加载的图片

2.2.3 引擎中

如unity中拼接好的界面预制体,ue中制作好的UMG等

>> 最终都是我们编写的界面标记,最后会通过图形库渲染出来在屏幕上显示。在调用图形库时,在引擎中则由引擎去实现了。

 

2.3 什么时候显示,界面的生命周期

  1. 加载前
  2. 显示完成
  3. 关闭时

这些通常写入一个UI框架中,方便做统一处理。UI显示前通常还有个需要展示的数据的准备工作,不管是本地数据、服务器下发的通常在界面的控制器里准备完成。常见的两种即MVC和其升级版MVVM。

3. 总结

以上其实就是总结,再简单总结下。做过大量客户端开发工作,工作中编程内容主要是对界面中UI元素的管理和响应事件的逻辑处理,可以熟练的应用各种UI框架以提高生产效率。如果只停留于应用工作技术上的提升不会太大。

4. 个人题外话

接下来想做UE客户端的工作,因为感觉蓝图还挺好用的。再就是UE可能会做游戏相关的比较感兴趣,又是开源的感觉也学不完能做很久。挺羡慕那些明确自己目标的人,要做架构师、动画师啦。自己工作久了发现对架构师什么的都不感兴趣T_T,对动画师优点兴趣但又看不出兴趣有多大,平时几乎不去了解,又没美术基础,也很难从头再来,还是只能走一步看一步了。

标签:总结,界面,元素,开发,UI,冒泡,2.1,客户端
From: https://www.cnblogs.com/zxy-blog/p/17864728.html

相关文章

  • Java开发者的Python快速实战指南:探索向量数据库之文本搜索
    前言如果说Python是跟随我的步伐学习的话,我觉得我在日常开发方面已经没有太大的问题了。然而,由于我没有Python开发经验,我思考着应该写些什么内容。我回想起学习Java时的学习路线,直接操作数据库是其中一项重要内容,无论使用哪种编程语言,与数据库的交互都是不可避免的。然而,直接操作......
  • 直播软件app开发,仿写导航栏快速实现页面导航
    直播软件app开发,仿写导航栏快速实现页面导航physics和dragStartBehavior属性的应用示例: CopycodeTabBarView( controller:_tabController, physics:NeverScrollableScrollPhysics(),//禁用滚动 dragStartBehavior:DragStartBehavior.down,//垂直滚动 children......
  • python开发之个微机器人的二次开发
    请求URL:http://域名地址/sendText请求方式:POST请求头Headers:Content-Type:application/jsonAuthorization:login接口返回参数:参数名必选类型说明wId是string登录实例标识wcId是string接收方群idcontent是string文本内容消息(@的微信昵称需要自己......
  • 机密计算如何引领AI开发的安全未来
    机密计算如何引领AI开发的安全未来PrimiHub一款由密码学专家团队打造的开源隐私计算平台,专注于分享数据安全、密码学、联邦学习、同态加密等隐私计算领域的技术和内容。先进的AI模型比如机器学习和生成式AI为加速医疗研究、促进业务增长和协助打击犯罪等领域带来了巨大的潜力......
  • influxdb 连续查询使用总结
    转载请注明出处:1.定义:InfluxDB连续查询(ContinuousQuery)是一种自动化查询类型,该查询会根据定义的时间间隔定期运行,并将结果存储在新的目标测量中。这样的查询通常用于处理大量时间序列数据。2.基本语法使用语法格式:CREATECONTINUOUSQUERY<cq_name>ON<db_name>BEGIN......
  • WPF应用开发之附件管理
    在我们之前的开发框架中,往往都是为了方便,对附件的管理都会进行一些简单的封装,目的是为了方便快速的使用,并达到统一界面的效果,本篇随笔介绍我们基于SqlSugar开发框架的WPF应用端,对于附件展示和控件的一些封装处理界面效果,供大家参考斧正。1、回顾附件管理,Winform端以及VueElement......
  • 关于人机界面的定义/类型/开发/优缺点及应用
    在本文中,数维图小编将为您介绍HMI的定义、HMI的类型、HMI的选择、HMI的优缺点。什么是HMI? 人机界面简称HMI,是一种允许人类从控制制造过程的PLC发出指令和接收反馈的设备。换句话说,它是将人连接到机器、系统或设备的用户界面或仪表板。虽然从技术上讲,该术语可以应用于允许......
  • vite.config开发经验分享
    前言在使用vue3+vite实际开发过程中的一些经验分享,涵盖vite构建优化配置项的实践,以及打包配置性能优化的实践plugin项目优化汇总@vitejs/plugin-vuevite支持vue开发按需引入组件库unplugin-vue-componentsunplugin-vue-components插件可以在Vue文件中自动引入......
  • 亚马逊云科技基于 Polygon 推出首款 Amazon Managed Blockchain Access,助 Web3 开发人
     2023年11月26日,亚马逊(Amazon)旗下AmazonWebServices(Amazon)在其官方博客上宣布,AmazonManagedBlockchain(AMB)Access已支持PolygonProof-of-Stake(POS)网络,并将满足各种场景的需求,包括需要以高可用方式频繁访问PolygonJSON-RPCAPI的场景以及需要间歇性、不......
  • Java开发者的Python快速进修指南:实战之跳表pro版本
    之前我们讲解了简易版的跳表,我希望你能亲自动手实现一个更完善的跳表,同时也可以尝试实现其他数据结构,例如动态数组或哈希表等。通过实践,我们能够发现自己在哪些方面还有所欠缺。这些方法只有在熟练掌握之后才会真正理解,就像我在编写代码的过程中,难免会忘记一些方法或如何声明属性......