经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » 游戏设计 » 查看文章
从零开始实现放置游戏(九)——实现后台管理系统(7)地图选择控件
来源:cnblogs  作者:丶谦信  时间:2019/7/10 9:23:33  对本文有异议

  前面做了地图怪物的添加,删除,查询等功能。但添加怪物的时候,需要选择怪物所在地图。前几张的源代码中,我忘了把这部分改回去,所以如果想要成功添加,需要自己改一下html界面,手动填写怪物所在地图的ID。然而,我们配置的时候,地图ID并不是固定的,而是数据库自增的。所以这里最好做成一个弹窗,点击后弹出一个地图列表,让我们手动选择怪物所在地图。

  本章我们就实现这样一个弹窗控件,实现对地图的选择。后面如果有选择怪物,选择装备等需求,都可照猫画虎。整个过程的流程大致如下:

实现步骤

  首先,我们给弹出的地图列表界面,添加相应的Controller和jsp页面。

  在com.idlewow.rms.controller包下新建UserControlController类,如下:

  1. package com.idlewow.rms.controller;
  2. import org.springframework.stereotype.Controller;
  3. import org.springframework.web.bind.annotation.RequestMapping;
  4. @Controller
  5. @RequestMapping("/userControl")
  6. public class UserControlController {
  7. @RequestMapping("/chooseMap")
  8. public Object chooseMap() {
  9. return "/userControl/chooseMap";
  10. }
  11. }
UserControlController.java

  在/webapp/WEB-INF/views/userControl路径下,新建chooseMap.jsp:

  1. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  2. <%@ include file="/authorize.jsp" %>
  3. <!DOCTYPE html>
  4. <html class="x-admin-sm">
  5. <head>
  6. <meta charset="UTF-8">
  7. <title>选择地图</title>
  8. <meta name="renderer" content="webkit">
  9. <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  10. <meta name="viewport"
  11. content="width=device-width,user-scalable=yes, minimum-scale=0.4, initial-scale=0.8,target-densitydpi=low-dpi"/>
  12. <link rel="stylesheet" href="<%=path%>/css/font.css">
  13. <link rel="stylesheet" href="<%=path%>/css/xadmin.css">
  14. <script type="text/javascript" src="<%=path%>/lib/layui/layui.js" charset="utf-8"></script>
  15. <script type="text/javascript" src="<%=path%>/js/xadmin.js"></script>
  16. </head>
  17. <body>
  18. <div class="layui-fluid">
  19. <div class="layui-row layui-col-space15">
  20. <div class="layui-col-md12">
  21. <div class="layui-card">
  22. <div class="layui-card-body ">
  23. <form class="layui-form layui-col-space5" method="post">
  24. <div class="layui-inline layui-show-xs-block">
  25. <input type="text" name="name" placeholder="请输入地图名称" autocomplete="off" class="layui-input">
  26. </div>
  27. <div class="layui-inline layui-show-xs-block">
  28. <button class="layui-btn" lay-submit lay-filter="search" type="button" onclick="search();">
  29. <i class="layui-icon">&#xe615;</i>查询
  30. </button>
  31. </div>
  32. </form>
  33. </div>
  34. <div class="layui-card-body ">
  35. <table class="layui-table layui-form" id="datatable"></table>
  36. </div>
  37. </div>
  38. </div>
  39. </div>
  40. </div>
  41. </body>
  42. <script type="text/javascript" src="<%=path%>/js/helper.js?v=0530"></script>
  43. <script type="text/javascript" src="<%=path%>/js/wow/userControl/chooseMap.js?v=0530"></script>
  44. </html>
chooseMap.jsp

  跟弹窗赋值相关的代码,为了代码简洁,我们还是封装成一个类,写在helper.js里:

  1. …………
  2. …………
  3. var UserControl = function () {
  4. };
  5. UserControl.prototype = {
  6. chooseMap: function (idTag, nameTag) {
  7. var url = _webroot + '/userControl/chooseMap?single=1';
  8. if (idTag && idTag !== '') {
  9. url += '&idTag=' + idTag;
  10. }
  11. if (nameTag && nameTag !== '') {
  12. url += '&nameTag=' + nameTag;
  13. }
  14. window.open(url, '_blank', 'height=500,width=720,top=200,left=300,toolbar=no,menubar=no,scrollbars=no,resizable=no,location=no,status=no,z-look=yes');
  15. },
  16. chooseMapCallBack: function (id, name, idTag, nameTag) {
  17. if (idTag && idTag !== '') {
  18. $('#' + idTag).val(id);
  19. } else {
  20. $('#mapId').val(id);
  21. }
  22. if (nameTag && nameTag !== '') {
  23. $('#' + nameTag).val(name);
  24. } else {
  25. $('#mapName').val(name);
  26. }
  27. }
  28. };
  29. window.userControl = new UserControl();
  30. …………
  31. …………
Helper.js

  这里,主要封装了两个事件。chooseMap对应了点击选择地图按钮的弹窗事件,chooseMapCallBack对应选择后的回调事件,这里回调时,默认赋值给id为mapId和mapName的dom。如果同一页面,有多出需要选择地图的地方,可以指定回调赋值的dom id。

  最后,在/webapp/js/wow/userControl目录下,新建chooseMap.js,添加对应的业务js代码:

  1. layui.use(['upload', 'table', 'form'], function () {
  2. var cols = [[
  3. {field: 'id', width: 50, title: 'id'}
  4. , {field: 'name', title: '地图名称'}
  5. , {
  6. field: 'occupy', title: '领土归属', templet: function (d) {
  7. return enumUtil.occupyImage(d.occupy) + enumUtil.occupy(d.occupy);
  8. }
  9. }
  10. , {
  11. title: '操作', width: 150, templet: function (d) {
  12. return '<button class="layui-btn layui-btn-xs" onclick="choose(\'' + d.id + '\',\'' + d.name + '\')" type="button"><i class="layui-icon">&#xe642;</i>选择</button>';
  13. }
  14. }
  15. ]];
  16. crud.list(cols, '/manage/map/list');
  17. });
  18. function search() {
  19. var data = {
  20. name: $('input[name="name"]').val(),
  21. levelStart: $('input[name="levelStart"]').val(),
  22. levelEnd: $('input[name="levelEnd"]').val(),
  23. faction: $('select[name="faction"]').val(),
  24. mobClass: $('select[name="mobClass"]').val(),
  25. mobType: $('select[name="mobType"]').val()
  26. };
  27. crud.search(data);
  28. }
  29. function choose(id, name) {
  30. if (confirm("确认选择吗?")) {
  31. if (window.opener) {
  32. var idTag = _querystring['idTag'];
  33. var nameTag = _querystring['nameTag'];
  34. window.opener.userControl.chooseMapCallBack(id, name, idTag, nameTag);
  35. }
  36. window.close();
  37. }
  38. }
chooseMap.js

  html页面中,对应的添加选择按钮即可,这里由于前面提供的源代码我忘记处理,所以应该是已经添加好的:

  1. …………
  2. …………
  3. <div class="layui-form-item">
  4. <label for="mapName" class="layui-form-label"> <span class="x-red">*</span>所在地图 </label>
  5. <div class="layui-input-inline">
  6. <input type="hidden" id="mapId" name="mapId"/>
  7. <input type="text" id="mapName" name="mapName" required lay-verify="required"
  8. autocomplete="off" class="layui-input" readonly="readonly" onclick="userControl.chooseMap();">
  9. <button type="button" class="layui-btn layui-inline"
  10. onclick="userControl.chooseMap();"><i class="layui-icon">&#xe615;</i>选择地图
  11. </button>
  12. </div>
  13. </div>
  14. …………
  15. …………
add.jsp

运行效果

 

小结

本章简要实现了一个前端的小功能。感觉最近几张比较枯燥,都是实际业务代码,没有什么需要特别介绍。

到这里,后台管理系统基本实现完毕。下一张预计开始开发idlewow-game模块。

本章源码下载地址:https://idlestudio.ctfile.com/fs/14960372-386615235

本文原文地址:https://www.cnblogs.com/lyosaki88/p/idlewow_9.html

 

 

 

原文链接:http://www.cnblogs.com/lyosaki88/p/idlewow_9.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号