如果您的应用程序具有完全处理2D绘图的GUI,那么处理绘制内容和触摸内容的最佳做法应该是什么?

更好理解的一个例子:

我有一张地图游戏.在这张地图上,我可以建造房屋和东西.

我还有一个可以扩展的信息栏.在扩展栏上,我绘制了一些有关游戏的信息,它还提供了更改不同值的界面.如果发生触摸,我必须检查信息栏是否已扩展,以确定我是否要更改地图上的内容或栏上的内容.

这是由州模式完成的,但我有一些疑问,如果这是正确的,因为我认为它可能有点复杂,因为可能的“子状态”.

基本上问题是:State Pattern(来自GoF)是处理纯图形GUI的最佳实践吗?

解决方法:

这通常的工作方式是UI是Control对象的树.每个Control都有一些边界框,并且可能有许多浮动在它上面的子控件.当发生点击时,树从上到下走(这意味着父母之前的孩子和顺序的兄弟姐妹).对于每个控件,您将看到该点是否与其边界框相交.如果是这样,给控件一个处理点击的机会(即一些虚拟的OnClick方法).如果是,请停止处理,单击完成.否则,继续走,直到你到达一个处理它的控件.

标签:java,android,user-interface,design-patterns

来源: https://codeday.me/bug/20190705/1383789.html

java设计网站导航条_java – 最佳实践:2D HUD屏幕导航的设计模式相关推荐

  1. Java Web应用的代码分层最佳实践

    转载自 Java Web应用的代码分层最佳实践 代码分层,对于任何一个Java Web开发来说应该都不陌生.一个好的层次划分不仅可以能使代码结构更加清楚,还可以使项目分工更加明确,可读性大大提升,更加 ...

  2. 深入理解java虚拟机 -- jVM高级特性与最佳实践

    <深入理解 Java 虚拟机–JVM高级特性与最佳实践> 关于这本书已经断断续续的看了好几遍了,使自己对jvm有了很深的理解,但是由于长时间的不用,对很多的功能点有所遗忘,特此写下这篇随手 ...

  3. 【转】Java中关于异常处理的十个最佳实践

    原文地址:http://www.searchsoa.com.cn/showcontent_71960.htm 导读:异常处理是书写强健Java应用的一个重要部分,Java许你创建新的异常,并通过使用 ...

  4. 梦想成真…教学–专业的Java开发人员:工具和最佳实践

    我总是喜欢分享知识. 我写博客的原因之一是分享我在软件工程师方面的知识. 创立并运行(与几个朋友一起)第一个 早在2003年, 希腊的Java用户组就是由于我们在工作中得不到足够的培训或个人开发机会, ...

  5. 《深入理解Java虚拟机 - Jvm高级特性与最佳实践(第三版)》阅读笔记

    <深入理解Java虚拟机>阅读笔记 本repository为<深入理解Java虚拟机 - Jvm高级特性与最佳实践(第三版)>阅读笔记,因为第一章主要讲的是Java的发展历史, ...

  6. 深入理解java虚拟机 - jvm高级特性与最佳实践(第三版)_JVM虚拟机面试指南:年薪30W以上高薪岗位需求的JVM,你必须要懂!...

    JVM的重要性 很多人对于为什么要学JVM这个问题,他们的答案都是:因为面试.无论什么级别的Java从业者,JVM都是进阶时必须迈过的坎.不管是工作还是面试中,JVM都是必考题.如果不懂JVM的话,薪 ...

  7. bootstrap导航条文字颜色_XEditor基础组件:导航条

    导航条是网页中最常见的组件之一,它通常位于网页的顶部.当我们想浏览网站的其他部分时,我们常常会回到网页顶部,然后点击导航条中的某个链接,跳转到其他页面. XEditor提供了各种各样的导航条,在使用导 ...

  8. java中字符串的精确匹配_Java最佳实践–字符串性能和精确字符串匹配

    java中字符串的精确匹配 在使用Java编程语言时,我们将继续讨论与建议的实践有关的系列文章,我们将讨论String性能调优. 我们将专注于如何有效地处理字符串创建, 字符串更改和字符串匹配操作. ...

  9. java高性能序列化_Java最佳实践–高性能序列化

    java高性能序列化 在使用Java编程语言时,我们将继续讨论与建议的实践有关的系列文章,我们将讨论并演示如何将对象序列化用于高性能应用程序. 所有讨论的主题均基于用例,这些用例源于电信行业关键任务超 ...

最新文章

  1. “安全即代码”:整合安全团队和DevOps团队
  2. 浅析 Linux 初始化 init 系统: UpStart
  3. rpm mysql 更改目录_rpm形式安装的MySQL服务 并 修改数据文件目录( red hat)_mysql...
  4. python numpy教程_Python中的Numpy入门教程
  5. python返回函数值并退出函数_Python函数的返回值和作用域
  6. golang中,new和make的区别
  7. 为什么判断list的时候,既要判断不等于null有要判断size大于0
  8. php socket通信(tcp/udp)
  9. 【unity3D】 分享学习路上的一些坑(二)——人物血条在行走时发生旋转;
  10. 【励志】比风水厉害100倍的宇宙定律
  11. TTL expired in transit (TTL 传输中过期) ping一个ip却返回另一个ip
  12. imx7d 通过imx7d-sdb.dts 添加 spi设备
  13. 启动fiddler导致浏览器无法上网的解决方法
  14. Mac OS X在终端中打开文件夹窗口
  15. Cricuit Switched Fallback (CSFB) : CDMA2000 1XRTT
  16. python骨灰教学_10招!看骨灰级Pythoner玩转Python的方法
  17. CocosCreator小游戏排行榜
  18. [14]Windows内核情景分析 --- 文件系统
  19. vue表格实现固定表头首列
  20. 最全的OLT设备介绍

热门文章

  1. 国庆中秋双节旅游活动精选 | 走遍东西南北,玩儿转八天长假
  2. python手动实现图像像素的kmeans聚类(附代码)
  3. mysql提升事务性能
  4. html超出长度动态换行_html内容超出了div的宽度如何换行让内容自动换行
  5. python编译和反编译
  6. 矩阵的秩、矩阵分解概念
  7. 关于Jsonp,你知道多少?
  8. EasyUI验证密码不一致
  9. Java实现 蓝桥杯VIP 算法提高 5-3日历
  10. scrapy淘宝爬虫(通过模拟登录获取cookie)获取价格信息评论