- 博客(24)
- 收藏
- 关注
原创 2021-01-05
关于js Object.defineProperty问题:疑问句子:let __define = this && this._define || function (o, p, g, s) { Object.defineProperty(o, p, { configurable: true, enumerable: true, get: g, set: s }) };理解:Object.defineProperty(o,p,attributes),是o修改的对象,p是需要修改对象的模
2021-01-05 11:38:30
140
原创 egret 自定义事件
在游戏开发过程中,程序常常需要跨模块获取信息。跨模块传递信息的方法有多种,通过自定义事件来获取信息是一个方法。可以了解一下:/** * 自定义事件管理 * 2019.7.9 */class CustomEventMgr{ //事件广播器 private _dispatcher:egret.EventDispatcher; private constructor() { this._dispatcher = new egret.EventDispatcher(); } priv
2020-06-11 18:02:47
310
原创 egret 图文并排
egret图文并的实现和想法图文并排,是图片和文本并列排在一起。在某些需求中,比如聊天,在输入某些文字的同时需要添加一些表情图片,或者动态图片使得表达更加生动。那么在游戏引擎中,文本的渲染计算是单独的。那么图文并排应该怎么实现呢?1.在字体中加入图片(未实现)其实文字本身也是图片,所以如果这个字体文件中存在我们需要的图片的话,那么我们在给文本赋值是在相应的文本给出对应的图片名字就行。但是如果我们无法对某个字体A文件做出相应的修改,这个个字体又是我们非常需要的,一定要用的怎么办?我们可以重新生
2020-06-10 18:31:57
1037
原创 egret引擎生命周期相关
1.游戏开发生命周期关于游戏开发中的生命周期相关的知识,参考一下:https://www.jianshu.com/p/ebc9e087676e2.egret 2d引擎中的生命周期对于egret 2D中的生命周期我们来了解一下:(1)心跳egret的 SystemTicker,是引擎的心跳计时器,egret通过SystemTicker来执行每一帧的eventLoop,渲染等操作。保持游戏...
2020-04-14 15:47:07
883
原创 js 深克隆和浅克隆
js 深克隆和浅克隆(1)深克隆var clone = function(obj){ let o = obj.constructor()===Array? []:{}; for(let key in obj) { o[key] = typeof obj[key] === "Objbect"? clone(obj[key]):obj[key]; } return o;}(...
2020-04-13 17:17:24
165
原创 js和egret中实现对对象属性变化监听(Watcher类)
Watcher,扮演的角色是订阅者/观察者,他的主要作用是为观察属性提供回调函数以及收集依赖(如计算属性computed,vue会把该属性所依赖数据的dep添加到自身的deps中),当被观察的值发生变化时,会接收到来自dep的通知,从而触发回调函数。watcher提供对象和回调函数绑定,方便我们需要对某个属性进行监听变化是的回调。js简单的Watcher实现:https://www.ji...
2020-04-13 17:14:16
838
原创 背包mvc模式笔记
//控制器 代码模板class PackController { private model: PackModel; constructor(model) { this.model = model; this.init(); } //事件表 protected eventDatas; /** * 注册监听...
2020-04-09 17:25:08
123
原创 数组多条件快排
灵活使用快排排序多个条件的有序数组快排原理:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列.//快排代码var quickSort = function (arr) { var sort = function (arr, left, r...
2020-04-08 20:02:29
239
转载 WebSocket和Socket相关
WebSocket和Socket的区别socket 其实并不是一个协议,而是为方便使用TCP、UDP而抽象出来的一层,是位于应用层和传输层之间的一组接口。WebSocket则是一个典型的应用层协议。是TCP/ip协议的再封装。websocket 是一个完整的应用层协议,有一套标准的api,相对sockect更灵活。websocket是为了解决http单向传输。WebSocket在建立握手...
2020-04-07 20:00:40
212
原创 h5游戏项目性能优化(erget)
减少drawcalldrawcall是CPU对底层图形绘制接口的调用命令GPU执行渲染操作,CPU和GPU并行工作,它们之间通过命令缓冲区连接,CPU向其中发送渲染命令,GPU接收并执行对应的渲染命令。这里drawcall影响绘制的原因主要是因为每次绘制时,CPU都需要调用drawcall而每个drawcall都需要很多准备工作,检测渲染状态、提交渲染数据、提交渲染状态。而GPU本身具有很强大...
2020-04-07 19:48:01
717
原创 排序算法之快速排序
快速排序通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列快速排序的思路:(1)首先设定一个分界值,通过该分界值将数组分成左右两部分。(2)将大于或等于分界值的数据集中到数组右边,小于分界值的数据集中到数组的左边。此时,左边部分中各元素都小于或...
2019-12-16 20:46:53
154
原创 排序算法之希尔排序
希尔排序/希尔排序(Shell’s Sort)是插入排序的一种又称“缩小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。//希尔排序是基于插入排序的以下两点性质而提出改进方法的:1.插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率。2.但插入排序一般来说是低效的,因为插入排序每次...
2019-12-09 20:57:56
106
原创 排序算法之插入排序
插入排序插入排序的基本思想是:每步将一个待排序的记录,按其关键码值的大小插入前面已经排序的文件中适当位置上,直到全部插入完为止。1、直接插入排序// 直接插入排序的算法思路: // (1) 设置监视哨arr[0],将待插入记录的值赋值给arr[0]; // (2) 设置开始查找的位置j; // (3) 在数组中进行搜索,搜索中将第j个记录后移,直至arr[0]≥arr[j]为止; /...
2019-12-05 21:06:03
157
原创 排序算法之选择排序
选择排序法选择排序法是一种不稳定的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到全部待排序的数据元素排完。时间复杂度选择排序的交换操作介于 0 和 (n - 1) 次之间。选择排序的比较操作为 n (n - 1) / 2 次之间。选择排序的赋值操作...
2019-12-03 21:12:56
162
原创 排序算法之冒泡排序
冒泡排序冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。冒泡算法思路非常直观,就是追个遍历比较,依据规则来更换位置。最好时间复杂度:O(n)。最坏时间复杂度:O(n...
2019-12-02 20:12:19
275
原创 二分查找
二分查找二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。查找过程首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为...
2019-11-28 20:07:05
107
原创 egret 实现图片一次闪光效果
效果如下图:这个图的静态效果,闪光会在表面划过。类似的效果也可以用webgl 的shader实现/**物体/图片表面一道流光闪过效果实现 * 本效果实现是使用遮罩实现 * 表面流光 基于egret2d 引擎实现 * @param item 闪光对象物品 * @param twTime 缓动时间 * @param dir 缓动x轴方向 1 正方向 0 反方向 * @pa...
2019-11-27 20:59:43
1152
2
原创 队列(堆、queue)
队列的定义队列(堆、queue),是只允许在一端进行插入操作,而在另一端进行删除操作的线性表,即先进先出。队列的抽象数据类型interface Queue { //初始化/ //init(); /**销毁 */ destroy(); /**清空 */ clear(); /**判空 */ empty(): boolean; /**入栈 */ push(obj); /**获...
2019-11-26 20:45:05
223
原创 栈(Stack)结构
栈(stack)栈是限定仅在表尾进行插入和删除操作的线性表//栈(Stack):是限定仅在表尾进行插入和删除操作的线性表//栈有两中操作,入栈和出栈//栈的抽象数据类型interface Stack { //初始化/ //init(); /**销毁 */ destroy(); /**清空 */ clear(); /**判空 */ empty(): boolean; /*...
2019-11-22 19:51:36
265
原创 游戏中敏感词屏蔽操作(DFA算法)
/** * 违禁词过滤器 DFA算法 */class BannedWordFilter { // 是否已初始化 private _inited: boolean; // 脏词库 private dirtyWordArray: Array<string> = ["垃圾", "辣鸡", "sb", "智障", "呵呵", "jj", "GG", "曹", "鸡儿", "尼玛"...
2019-11-22 19:51:04
2610
2
原创 两个图片区域叠加,像素不规则,像素不叠加的点击判断(基于egret)
在开发项目过程中,总有各个不同的需求,比如既然有叠加那他们的层级关系必有一个在上一个在另一个的下面,按照我们现有的点击事件触发的规则,点击重叠的部分就会点击到最上的那一层,那么怎样避免这种情况呢。精准像素判断就可以实现:pixelHitTest = trueclass Test extends eui.Component { private image1: eui.Image;//底层图...
2019-09-21 09:56:10
1006
原创 egret 实现刮刮乐效果
使用egret mask实现刮刮乐效果想要实现刮的效果,还得有个遮罩maskclass GuaGuaLe extends eui.Component { private i0: eui.Image;//结果层 private i3: eui.Image;//刮层 private maskGroup: eui.Group;//遮罩层,当然也可以是egret.DisplayObjectC...
2019-09-19 11:13:40
1092
1
翻译 A*算法个人理解
A*算法是游戏中常用的寻路算法,不管在2D还是3D中,只要是多场景,或者是比较大的场景,需要用到寻路来提示移动角色的都需要用到寻路算法,寻路算法有很多种, 还有递归, 非递归, 广度优先, 深度优先, 使用堆栈等等, 有兴趣的可以研究研究~~。这里主要说A*算法的个人理解。
2019-02-16 17:12:30
819
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人