00003 不思议迷宫.0006:客户端的操作如何反应到服务器?

2024-04-08 09:48

本文主要是介绍00003 不思议迷宫.0006:客户端的操作如何反应到服务器?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!



00003 不思议迷宫.0006:客户端的操作如何反应到服务器?

玩家点击手机屏幕,根据点到内容的不同而执行不同的操作,比如切换画面或者场景、播放动画或声音、发送数据等等。我现在所关心的是点到物品,比如主界面中的海怪触手、漂流瓶、罐子等等,还有地牢中神龙许愿点击99次矿物后才出现的钻石。

我在主界面的创建代码中未能找到海怪触手、漂流瓶、罐子之类的相关代码(可能有,但被我忽略了;也可能是确实没有,它们都是动态创建的),所以研究下地牢中的物品捡取吧。

地牢界面的入口代码为/src/game/ui/form/dungeon/UIDungeonMain.luac。打开瞅瞅,发现代码很长,那如何快速找到我们所关心的物品捡取事件呢?其实办法很简单,只要搜索就行。

所谓物品捡取事件,其实也就是屏幕点击事件,只不过点击到的是物品。在cocos2dx中,点击事件需要通过addTouchEventListeneraddClickEventListener之类的函数进行注册。查找结果让我有点意外:

-- 注册点击事件

functionUIDungeonMain:registerTouchEvent()

    -- 卷轴按钮

    local btn_Magic =findChildByName(self.node, "CT2/juanzhou");

    local function onMagicOnClick(sender,eventType)

        if eventType == ccui.TouchEventType.endedthen

           AudioM.playFx("button_spell");

 

            if ME.user.forbidToOpenMagicUI andnot DungeonGuideM.isGuideFinished() then

                -- 禁止打开魔法书界面

                return;

            end

 

            -- 打开魔法书界面

            self:showMagicScrollUI();

        end

    end

    AddTouchEventListener(btn_Magic,onMagicOnClick);

 

    -- 宝物按钮

    local btnTreasure =findChildByName(self.node, "CT2/baowu");

    ……

    AddTouchEventListener(btnTreasure,onTreasureOnClick);

 

    -- 英雄格子

    localbgHero = findChildByName(self.node, "CT2/bg3");

    ……

    AddTouchEventListener(bgHero,onBgHeroOnClick);

 

    -- 施法选择目标背景

    local screen_bg =self.node:getChildByName("select_target_bg")

    ……

    screen_bg:addTouchEventListener(onOnClick);

 

    -- 称号冒泡点击事件

    local careerBubble =findChildByName(self.node, "CT2/career_bubble/bg");

    ……

   careerBubble:addTouchEventListener(onBubbleClick);

end

和捡取物品一点关系都没有!

好吧,那就换个思路。想想,既然是捡取物品,那相关的函数的函数名或者函数代码中总应当出现itemequipment这些字样吧?这次确实找到了:

    -- 注册捡取物品的处理函数

   EventMgr.register("UIDungeonMain", event.PICK_UP_ITEM,function(params)

       self.grids[params.pos]:onPickUp(params.bonus, params.newBonus,

           params.isItemVisible, params.noAlert, nil, params.borrowGrid);

        localpos = params.pos;

        localtype = params.type;

 

        -- 如果是拾取地图

        if type== GRID_TYPE_MAP then

            -- 判断邻格是否开启

           local adjoinGrids = DungeonM.getAdjoinGrids(pos);

            fori = 1, #adjoinGrids do

               local targetPos = adjoinGrids[i];

               local ok = DungeonM.canOpenGrid(targetPos);

               if ok == GRID_OPEN_OK then

                   self.grids[targetPos]:gotoVisible();

               end

            end

        end

 

       self:whenPickUpItem(params);

        -- 更新界面UI

       --self:updateUI();

    end);

拾取地图这什么鬼?先不管它,还是研究下self.grids[params.pos]:onPickUpself:whenPickUpItem

找到self.grids的赋值处,确定self.grids[params.pos]的类型:

    -- 生成格子

    self.grids ={}

    for i = 1,GRID_ROW_NUM do

        for j =1, GRID_COL_NUM do

            ……

           local grid = UIGrid.create(……);

            ……

           self.grids[index] = grid;

            ……

        end

        ……

    end

<

这篇关于00003 不思议迷宫.0006:客户端的操作如何反应到服务器?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/885243

相关文章

Git可视化管理工具(SourceTree)使用操作大全经典

《Git可视化管理工具(SourceTree)使用操作大全经典》本文详细介绍了SourceTree作为Git可视化管理工具的常用操作,包括连接远程仓库、添加SSH密钥、克隆仓库、设置默认项目目录、代码... 目录前言:连接Gitee or github,获取代码:在SourceTree中添加SSH密钥:Cl

使用Java将各种数据写入Excel表格的操作示例

《使用Java将各种数据写入Excel表格的操作示例》在数据处理与管理领域,Excel凭借其强大的功能和广泛的应用,成为了数据存储与展示的重要工具,在Java开发过程中,常常需要将不同类型的数据,本文... 目录前言安装免费Java库1. 写入文本、或数值到 Excel单元格2. 写入数组到 Excel表格

Python中pywin32 常用窗口操作的实现

《Python中pywin32常用窗口操作的实现》本文主要介绍了Python中pywin32常用窗口操作的实现,pywin32主要的作用是供Python开发者快速调用WindowsAPI的一个... 目录获取窗口句柄获取最前端窗口句柄获取指定坐标处的窗口根据窗口的完整标题匹配获取句柄根据窗口的类别匹配获取句

Python位移操作和位运算的实现示例

《Python位移操作和位运算的实现示例》本文主要介绍了Python位移操作和位运算的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 位移操作1.1 左移操作 (<<)1.2 右移操作 (>>)注意事项:2. 位运算2.1

Go语言开发实现查询IP信息的MCP服务器

《Go语言开发实现查询IP信息的MCP服务器》随着MCP的快速普及和广泛应用,MCP服务器也层出不穷,本文将详细介绍如何在Go语言中使用go-mcp库来开发一个查询IP信息的MCP... 目录前言mcp-ip-geo 服务器目录结构说明查询 IP 信息功能实现工具实现工具管理查询单个 IP 信息工具的实现服

Python ZIP文件操作技巧详解

《PythonZIP文件操作技巧详解》在数据处理和系统开发中,ZIP文件操作是开发者必须掌握的核心技能,Python标准库提供的zipfile模块以简洁的API和跨平台特性,成为处理ZIP文件的首选... 目录一、ZIP文件操作基础三板斧1.1 创建压缩包1.2 解压操作1.3 文件遍历与信息获取二、进阶技

Java中字符串转时间与时间转字符串的操作详解

《Java中字符串转时间与时间转字符串的操作详解》Java的java.time包提供了强大的日期和时间处理功能,通过DateTimeFormatter可以轻松地在日期时间对象和字符串之间进行转换,下面... 目录一、字符串转时间(一)使用预定义格式(二)自定义格式二、时间转字符串(一)使用预定义格式(二)自

springboot上传zip包并解压至服务器nginx目录方式

《springboot上传zip包并解压至服务器nginx目录方式》:本文主要介绍springboot上传zip包并解压至服务器nginx目录方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录springboot上传zip包并解压至服务器nginx目录1.首先需要引入zip相关jar包2.然

将Java项目提交到云服务器的流程步骤

《将Java项目提交到云服务器的流程步骤》所谓将项目提交到云服务器即将你的项目打成一个jar包然后提交到云服务器即可,因此我们需要准备服务器环境为:Linux+JDK+MariDB(MySQL)+Gi... 目录1. 安装 jdk1.1 查看 jdk 版本1.2 下载 jdk2. 安装 mariadb(my

Java字符串操作技巧之语法、示例与应用场景分析

《Java字符串操作技巧之语法、示例与应用场景分析》在Java算法题和日常开发中,字符串处理是必备的核心技能,本文全面梳理Java中字符串的常用操作语法,结合代码示例、应用场景和避坑指南,可快速掌握字... 目录引言1. 基础操作1.1 创建字符串1.2 获取长度1.3 访问字符2. 字符串处理2.1 子字