微信小游戏之 三消(一)

                     

首先设定一下 单个 方块 cell 类:

类定义和属性

  • `init` 方法 用于初始化方块,接收游戏实例、数据、宽度、道具类型和位置。

  • `onWarning` 方法 设置警告精灵的帧,并播放闪烁动作,用于显示方块的警告状态。

  •  `grow` 方法 根据传入的方向(上下左右),调整方块的大小,实现方块的增长效果。

  • - `bindEvent` 方法绑定触摸事件到方块节点。

  • - `onTouched` 方法处理触摸事件,包括用户点击和被其他方块触发的情况。根据方块状态和游戏状态,执行相应的逻辑。

  • `onBlockPop` 方法 在方块被消除时调用,处理连锁反应和道具触发的逻辑。

  • `playFallAction` 方法 控制方块下降的动画,更新方块的位置。

  • - `playStartAction` 控制方块生成时的动画。

  • - `playDieAction` 控制方块消失时的动画,并返回一个 Promise,以便在动画完成后执行其他操作。

  • - `surfaceAction` 控制方块浮出水面的动画。

  • - `generatePropAction` 可能是用于生成道具的动画,但具体实现为空。

init 方法是这段脚本中用于初始化方块实例的关键方法:

init(g, data, width, itemType, pos) {this._game = g;  // 游戏实例this._status = 1;  // 初始化方块状态为可触发点击if (pos) {// 如果提供了位置参数,则使用}pos = pos || {x: data.x,y: data.y};this._itemType = itemType || 0;  // 初始化道具类型this.warningType = 0;  // 初始化警告类型this.isPush = false;  // 初始化是否被推动this.bindEvent();  // 绑定事件this.color = data.color || Math.ceil(Math.random() * 4);  // 初始化方块颜色this.colorSprite = this.node.getChildByName('color').getComponent(cc.Sprite);// 设置方块颜色精灵的帧this.colorSprite.spriteFrame = itemType ? g.propSpriteFrame[(itemType - 1) * 4 + this.color - 1] : this._game.blockSprite[this.color - 1];this.warningSprite.spriteFrame = '';  // 初始化警告精灵的帧为空this._width = width;  // 保存方块宽度this._controller = g._controller;  // 获取控制器this.lightSprite.node.active = false;  // 初始时关闭光效精灵// 计算方块宽度this.node.width = this.node.height = width;this.startTime = data.startTime;  // 初始化开始时间this.iid = data.y;  // 初始化方块在网格中的行索引this.jid = data.x;  // 初始化方块在网格中的列索引this.node.x = -(730 / 2 - g.gap - width / 2) + pos.x * (width + g.gap);this.node.y = (730 / 2 - g.gap - width / 2) - pos.y * (width + g.gap);this.node.rotation = 0;  // 初始化方块旋转角度为0this.playStartAction();  // 播放开始动画
},

grow 方法是方块在游戏中进行变形或增长时的关键逻辑,它使得方块能够根据游戏规则在特定方向上扩展:

grow(type) { //1234 代表上、下、左、右switch (type) {case 1:// 如果方块不是在水平增长状态,并且可以向上增长if (this.growType != 2) {this.colorSprite.node.height += this._game.gap * 2this.colorSprite.node.y += this._game.gapthis.growType = 1}breakcase 2:// 如果方块不是在水平增长状态,并且可以向下增长if (this.growType != 2) {this.colorSprite.node.height += this._game.gap * 2this.colorSprite.node.y -= this._game.gapthis.growType = 1}breakcase 3:// 如果方块不是在垂直增长状态,并且可以向左增长if (this.growType != 1) {this.colorSprite.node.width += this._game.gap * 2this.colorSprite.node.x -= this._game.gapthis.growType = 2}breakcase 4:// 如果方块不是在垂直增长状态,并且可以向右增长if (this.growType != 1) {this.colorSprite.node.width += this._game.gap * 2this.colorSprite.node.x += this._game.gapthis.growType = 2}break}
},

详细介绍可以链接

微信小游戏之三消(一) (qq.com)icon-default.png?t=N7T8https://mp.weixin.qq.com/s/SUPaWJ8bm5wrtLPZLiktjQ?token=1657907189&lang=zh_CN

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/50972.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络基础之(11)优秀学习资料

网络基础之(11)优秀学习资料 Author:Once Day Date: 2024年7月27日 漫漫长路,有人对你笑过嘛… 全系列文档可参考专栏:通信网络技术_Once-Day的博客-CSDN博客。 参考文档: 网络工程初学者的学习方法及成长之路(红…

【视频讲解】后端增删改查接口有什么用?

B站视频地址 B站视频地址 前言 “后端增删改查接口有什么用”,其实这句话可以拆解为下面3个问题。 接口是什么意思?后端接口是什么意思?后端接口中的增删改查接口有什么用? 1、接口 概念:接口的概念在不同的领域中…

【QT】QT 系统相关(事件、文件、多线程、网络、音视频)

一、Qt 事件 1、事件介绍 事件是应用程序内部或者外部产生的事情或者动作的统称。在 Qt 中使用一个对象来表示一个事件。所有的 Qt 事件均继承于抽象类 QEvent。事件是由系统或者 Qt 平台本身在不同的时刻发出的。当用户按下鼠标、敲下键盘,或者是窗口需要重新绘制…

追问试面试系列:JVM运行时数据区

hi 欢迎来到追问试面试系列之JVM运行时数据区,在面试中出现频率非常高,并且其中还存在一些误导性的面试,一定要注意。 什么误导性呢?面试中,有的面试官本来是想问JVM运行时数据区,不过提问时难免有些让你觉得很不爽。比如:你说说java内存模型,还比如说说JVM内存模型,…

昇思MindSpore学习入门-静态图高级编程技巧

如何优化编译性能 使用lazy_inline装饰器 神经网络模型的编译过程往往采用默认inline的方式,把层级的代码表达最终展开成一张扁平的计算图,一方面寻求最大的编译优化机会,另一方面也可以简化自动微分以及执行的逻辑。inline后形成的计算图包…

MySQL客户端命令一节将.sql文件导入MySQL

MySql客户端命令 直接输入SQL语句 使用MySQL客户端连接到服务器之后,可以发送SQL语句到服务器执行,并且以;和\g, \G作为结束不同的结束方式显示内容有所不同** TIPS: ;和\g结尾以表格的形式显示结果\G以行的形式显示结果 在连接到服务器之后…

Spring Cloud全解析:精通Spring上下文管理,构建高效微服务架构

springcloud容器 springCloud中不只存在了一个Spring容器,会进行多次创建Spring容器,来形成父子容器 BootStrap上下文:由SpringCloud监听器创建,用来初始化SpringCloud上下文,该容器是祖先容器SpringBoot上下文&…

[Python]mysql-connector

今天测试工作要将30w数据量的数据放入到表中,前端中因为有限制,一次只能插入1000条。我第一反应居然是用Selenium来搭一个脚本去通过前端傻傻的输入... 后来被点醒了...因为我们是知道数据库的地址已经拥有账号密码的,可以直接通过一些数据库…

跨境电商独立站:Shopify/Wordpress/店匠选哪个?

在面对不断增加的平台运营压力时,不少跨境电商的商家逐渐将注意力转向建立自己的独立站。据《中国跨境出口电商发展报告(2022)》所示,中国拥有的独立站数量在2022年已接近20万个,这表明独立站已成为卖家拓展海外市场的…

强化学习学习(一)从MDP到Actor-critic演员-评论家算法

文章目录 From Markov chains to Markov decision process (MDP):partially observed Markov decision peocess Value FunctionsQ-functionvalue functionUsing Q π Q^\pi Qπ and V π V^\pi Vπ Types of RL algorithmsExamples of algorithms Policy gradient大量有趣的数…

Git 删除 远端的分支

要删除 Git 远端的分支(例如: V3.2.1.13): 可以执行以下命令 git push origin --delete V3.2.1.13这条命令会向远端的仓库删除名为 V3.2.1.13 的分支。如果这个分支只在远端仓库存在而没有对应的本地分支,那么删除后这…

http、https、websocket

概念解析 HTTP(超文本传输协议)是一种无状态的请求/响应协议,通常用于客户端(如Web浏览器)和服务器之间的通信。客户端发送一个请求到服务器,然后服务器返回一个响应。HTTPS是HTTP的安全版本,它…

使用 Hive 聚合函数进行多行合并

各类学习教程下载合集 ​​https://pan.quark.cn/s/874c74e8040e​​ 在大数据处理中,Hive 是一个常用的数仓工具。它提供了丰富的聚合函数,可以帮助我们对数据进行各种聚合操作。本文将介绍如何使用 Hive 的聚合函数进行多行合并,并提供详…

均匀圆形阵列原理及MATLAB仿真

均匀圆形阵列原理及MATLAB仿真 目录 前言 一、均匀圆阵原理 二、圆心不存在阵元方向图仿真 三、圆心存在阵元方向图仿真 四、MATLAB仿真代码 总结 前言 本文详细推导了均匀圆形阵列的方向图函数,对圆心不放置阵元和圆心放置阵元的均匀圆形阵列方向图都进行了仿…

MySQL-视图、存储过程和触发器

一、视图的定义和使用 视图是从一个或者几个基本表(或视图)导出的表。它与基本表不同,是一个虚表,视图只能用来查询。不能做增删改查(虚拟的表) 1.视图的作用 简化查询重写格式化数据频繁访问数据库过滤数据 2.创建视图 -- 创建视图 -- 语法…

【MATLAB APP】建立独立桌面APP

背景:已有MATLAB APP的.mlapp文件,但客户提出需要可以直接使用的exe文件。 要求:点开即用,无需下载MATLAB。使用者无法修改APP的代码。 一、环境配置 APP创建者:安装MATLAB R2023a,配置Application Compile…

学习Vue2收藏这一篇就够了(如何创建Vue实例)

什么是Vue? Vue是什么:是一个用于构建用户界面的渐进式框架 什么是构建用户界面:基于数据动态渲染页面 什么是渐进式:循序渐进的学习 什么是框架:一整套完整的项目解决方案 创建Vue实例 核心步骤(4步): 准备容器 引包(官网) — 开发版本/生产版本 创建Vue实例 …

【git】切换到远程其他分支

切换到远程其他分支 当前在master分支,切换develop: $ git branch -rorigin/HEAD -> origin/masterorigin/developorigin/mastergit switch 正常多了: $ git switch -c develop --track origin/develop Updating files: 100% (4664/466…

创建vue3项目,以及使用示例

1.在根目录下cmd:vue create myobj(没有切换淘宝镜像记得切换,这样创建项目运行快) 2. 3.(按空格键选中,选好回撤就到下一步了) 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.然后输入执行以下两步就已经运行项目了 以…

Linux云计算 |【第二阶段】AUTOMATION-DAY4

主要内容: 部署Ansible、Ansible基础命令(Ansible ad-hoc命令格式、Ansible-doc帮助)、Ansible模块常用:脚本与命令模块、文件与账户模块、软件与服务模块、逻辑卷模块 补充:touch 除创建文件外,若再创建相…