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

相关文章

python panda库从基础到高级操作分析

《pythonpanda库从基础到高级操作分析》本文介绍了Pandas库的核心功能,包括处理结构化数据的Series和DataFrame数据结构,数据读取、清洗、分组聚合、合并、时间序列分析及大数据... 目录1. Pandas 概述2. 基本操作:数据读取与查看3. 索引操作:精准定位数据4. Group

Redis客户端连接机制的实现方案

《Redis客户端连接机制的实现方案》本文主要介绍了Redis客户端连接机制的实现方案,包括事件驱动模型、非阻塞I/O处理、连接池应用及配置优化,具有一定的参考价值,感兴趣的可以了解一下... 目录1. Redis连接模型概述2. 连接建立过程详解2.1 连php接初始化流程2.2 关键配置参数3. 最大连

Python操作PDF文档的主流库使用指南

《Python操作PDF文档的主流库使用指南》PDF因其跨平台、格式固定的特性成为文档交换的标准,然而,由于其复杂的内部结构,程序化操作PDF一直是个挑战,本文主要为大家整理了Python操作PD... 目录一、 基础操作1.PyPDF2 (及其继任者 pypdf)2.PyMuPDF / fitz3.Fre

Python极速搭建局域网文件共享服务器完整指南

《Python极速搭建局域网文件共享服务器完整指南》在办公室或家庭局域网中快速共享文件时,许多人会选择第三方工具或云存储服务,但这些方案往往存在隐私泄露风险或需要复杂配置,下面我们就来看看如何使用Py... 目录一、android基础版:HTTP文件共享的魔法命令1. 一行代码启动HTTP服务器2. 关键参

Python对接支付宝支付之使用AliPay实现的详细操作指南

《Python对接支付宝支付之使用AliPay实现的详细操作指南》支付宝没有提供PythonSDK,但是强大的github就有提供python-alipay-sdk,封装里很多复杂操作,使用这个我们就... 目录一、引言二、准备工作2.1 支付宝开放平台入驻与应用创建2.2 密钥生成与配置2.3 安装ali

MySQL 强制使用特定索引的操作

《MySQL强制使用特定索引的操作》MySQL可通过FORCEINDEX、USEINDEX等语法强制查询使用特定索引,但优化器可能不采纳,需结合EXPLAIN分析执行计划,避免性能下降,注意版本差异... 目录1. 使用FORCE INDEX语法2. 使用USE INDEX语法3. 使用IGNORE IND

Python使用openpyxl读取Excel的操作详解

《Python使用openpyxl读取Excel的操作详解》本文介绍了使用Python的openpyxl库进行Excel文件的创建、读写、数据操作、工作簿与工作表管理,包括创建工作簿、加载工作簿、操作... 目录1 概述1.1 图示1.2 安装第三方库2 工作簿 workbook2.1 创建:Workboo

SpringBoot改造MCP服务器的详细说明(StreamableHTTP 类型)

《SpringBoot改造MCP服务器的详细说明(StreamableHTTP类型)》本文介绍了SpringBoot如何实现MCPStreamableHTTP服务器,并且使用CherryStudio... 目录SpringBoot改造MCP服务器(StreamableHTTP)1 项目说明2 使用说明2.1

Ubuntu 24.04启用root图形登录的操作流程

《Ubuntu24.04启用root图形登录的操作流程》Ubuntu默认禁用root账户的图形与SSH登录,这是为了安全,但在某些场景你可能需要直接用root登录GNOME桌面,本文以Ubuntu2... 目录一、前言二、准备工作三、设置 root 密码四、启用图形界面 root 登录1. 修改 GDM 配

JSONArray在Java中的应用操作实例

《JSONArray在Java中的应用操作实例》JSONArray是org.json库用于处理JSON数组的类,可将Java对象(Map/List)转换为JSON格式,提供增删改查等操作,适用于前后端... 目录1. jsONArray定义与功能1.1 JSONArray概念阐释1.1.1 什么是JSONA