当前位置: 首页 > news >正文

无锡网站网站建设thinkphp5 wordpress

无锡网站网站建设,thinkphp5 wordpress,网站建设源码修改,网站栏目一般有哪些在之前的博文中《用Devc与easyx一步一步做游戏[启动界面部分]-之按钮制作》#xff0c;我们利用Devc和easyx完成了游戏启动界面按钮的基本制作#xff0c;实现了按钮的绘制以及鼠标悬停时的信息提示功能。然而#xff0c;目前还存在一个问题#xff0c;即鼠标移动时#x…在之前的博文中《用Devc与easyx一步一步做游戏[启动界面部分]-之按钮制作》我们利用Devc和easyx完成了游戏启动界面按钮的基本制作实现了按钮的绘制以及鼠标悬停时的信息提示功能。然而目前还存在一个问题即鼠标移动时提示文字会出现闪烁现象有很多童鞋在阅读后都表示出了兴趣。这篇博文我们就来解决这个问题并对代码进行优化。 文章目录 一、解决闪烁问题1. 问题分析2. 解决方案 二、代码优化1. 坐标和尺寸管理2. 代码结构优化 一、解决闪烁问题 1. 问题分析 提示文字闪烁的原因在于每次鼠标移动触发WM_MOUSEMOVE消息时都会频繁地清除矩形区域并重新绘制文字。这导致画面不断刷新从而产生闪烁感。为了解决这个问题我们需要减少不必要的绘制操作。 2. 解决方案 我们可以通过记录当前鼠标悬停的按钮状态来判断是否需要更新提示文字。如果鼠标仍然悬停在同一个按钮上就不需要重复清除和绘制。只有当鼠标从一个按钮移到另一个按钮时才进行相应的操作。 在代码中我们定义一个全局变量currentButtonIndex来记录当前鼠标悬停的按钮索引初始值设为 -1表示没有悬停在任何按钮上。 int currentButtonIndex -1;然后修改消息循环中的WM_MOUSEMOVE处理逻辑 ExMessage msg; while (true) {if (peekmessage(msg, EM_MOUSE)) {switch (msg.message) {case WM_LBUTTONDOWN:break; case WM_MOUSEMOVE:int newButtonIndex -1;if (msg.x 220 msg.x 220 170 msg.y 50 msg.y 50 50)newButtonIndex 0;else if (msg.x 220 msg.x 220 170 msg.y 140 msg.y 140 50)newButtonIndex 1;else if (msg.x 220 msg.x 220 170 msg.y 230 msg.y 230 50)newButtonIndex 2;else if (msg.x 220 msg.x 220 170 msg.y 320 msg.y 320 50)newButtonIndex 3;if (newButtonIndex ! currentButtonIndex) {// 清除之前的提示文字if (currentButtonIndex ! -1) {RECT prevRect {220, 420, 220 170, 420 30}; // 根据文字大小调整矩形区域clearrectangle(prevRect.left, prevRect.top, prevRect.right, prevRect.bottom);}currentButtonIndex newButtonIndex;if (currentButtonIndex ! -1) {tipInfo(tipInfoRect, title[currentButtonIndex]);}}break; default:break;}} }通过上述代码只有当鼠标悬停的按钮发生变化时才会清除之前的提示文字并绘制新的提示文字有效地解决了闪烁问题。 二、代码优化 1. 坐标和尺寸管理 之前的代码中按钮的坐标和尺寸都是直接写在代码里这样不利于修改和维护。我们可以将这些参数定义为常量或者结构体方便统一管理。 // 定义按钮相关常量 const int BUTTON_WIDTH 170; const int BUTTON_HEIGHT 50; const int BUTTON_GAP 40; const int START_Y 50; const int TIP_X 220; const int TIP_Y 420;然后在绘制按钮和判断鼠标位置时使用这些常量 // 绘制按钮 for(int i 0; i 4; i) {int x 220;int y START_Y i * (BUTTON_HEIGHT BUTTON_GAP);button(x, y, title[i]); }// 判断鼠标位置 if (msg.x TIP_X msg.x TIP_X BUTTON_WIDTH msg.y START_Y msg.y START_Y BUTTON_HEIGHT)newButtonIndex 0; // 其他按钮判断类似修改对应y坐标即可2. 代码结构优化 随着功能的增加代码逐渐变得复杂我们可以进一步优化代码结构将不同功能的代码封装到独立的函数中。例如将消息循环部分封装到一个函数handleMouseMessages中 void handleMouseMessages() {ExMessage msg; while (true) {if (peekmessage(msg, EM_MOUSE)) {switch (msg.message) {case WM_LBUTTONDOWN:break; case WM_MOUSEMOVE:int newButtonIndex -1;// 判断鼠标位置逻辑不变//...if (newButtonIndex ! currentButtonIndex) {// 清除和绘制逻辑不变//...}break; default:break;}}} }在main函数中调用这个函数 int main(int argc, char** argv) {initgraph(640, 480); setbkcolor(0x3B0000);cleardevice();// 绘制按钮for(int i 0; i 4; i) {int x 220;int y START_Y i * (BUTTON_HEIGHT BUTTON_GAP);button(x, y, title[i]);}handleMouseMessages();getchar();closegraph();return 0; }通过上述优化代码的可读性和可维护性都得到了显著提升。 到这里游戏启动界面按钮的制作已经基本完成解决了闪烁问题并对代码进行了优化。后续我们可以继续完善游戏启动界面的其他功能如按钮点击事件的处理等。希望这篇博文能帮助大家更好地理解和运用Devc与easyx进行游戏开发。
http://www.w-s-a.com/news/36149/

相关文章:

  • 方又圆网站建设信息流广告二级代理
  • 公司管理网站首页网站后台编辑框不显示
  • aspnet网站开发模板备案 网站建设方案书
  • 营销软件网站wordpress优秀的破解主题
  • 卧龙区网站建设国内漂亮网站欣赏
  • 服装 网站模板 wordpress石家庄做网站的公司有哪些
  • 惠州技术支持网站建设百度怎样注册免费的网站
  • 无锡哪里有做网站的公司泸州网站建设公司
  • 怎么进行网站推广jsp可以做那些小网站
  • 懒人手机网站wordpress修改秒速
  • WordPress资讯网站用花生壳做网站
  • 关于营销方面的网站建设网站怎么克隆
  • 站长网seo综合查询工具电商公司简介
  • 全能网站建设教程广告制作公司需要什么设备
  • 汽车行业做网站网站改版seo建议
  • 建设职业注册中心网站photoshop属于什么软件
  • 公司网站展示有哪些wordpress工单
  • iis新建网站seo是做什么工作的
  • 临沂网站建设厂家做外贸的女生现状
  • 电子商务网站建设实践临沂做网站的
  • 网站职能建设论文做外贸都有哪些网站
  • 网站建设项目需求分析房地产网站源码
  • 网站充值提现公司账务怎么做中国能建设计公司网站
  • 网站信息资源建设包括哪些网站网站做维护
  • 网站性能优化的方法有哪些建设施工合同网站
  • 郑州建设企业网站山西省住房和城乡建设厅网站
  • 做网站的去哪找客户正规制作网站公司
  • 网站代理访问是什么意思外国优秀设计网站
  • 合肥个人建站模板网络技术服务有限公司
  • 做网站什么公司好dw企业网站开发教程