使用Laya也有一年了。其中遇到的问题也是不少的。这里记录一下问题。可能对大家有帮助。

laya.utils.Handler

Laya.Handler 这个类使用的非常多。 一般一次性的操作需要透传我都会使用 Laya.Handler.create() 这个方法进行透传 回调。

最近做的一个战斗里面普遍使用到了这种回调。突然出现死循环

出一个例子:

代码:
var call =  Laya.Handler.create(this,function(){console.log("我是A")
})
console.log("执行前call地址:",call)
call.run();
console.log("执行后call地址:",call)
var call2 =  Laya.Handler.create(this,function(){console.log("我是B")
})
console.log("创建call2后call地址:",call)
console.log("执行call前call2地址:",call2)
call.run()
console.log("执行call后call2地址:",call2)打印结果:
执行前call地址: Handler {once: true, _id: 1, caller: global, args: undefined}
我是A
执行后call地址: Handler {once: true, _id: 0, caller: null, method: null, args: null}
创建call2后call地址: Handler {once: true, _id: 2, caller: global, args: undefined}
执行call前call2地址: Handler {once: true, _id: 2, caller: global, args: undefined}
我是B
执行call后call2地址: Handler {once: true, _id: 0, caller: null, method: null, args: null}

惊不惊喜。意不意外。 哈哈哈哈  千万别保留引用否则很有可能在执行的时候出现各种奇怪的问题。

解决方案可以使用  js的 bind 方法

//假装创建一个作用域
var tabel = {a:function(){  console.log("假装打印") },b:"我是一个数据"
} //执行table域的a函数
tabel.a()//没绑定之前
var func = function(x,y,z){//如果这个函数想要访问tabel.b的属性 可以把a的是作用域保留到这个函数console.log("绑定域函数内",this === tabel)console.log("也可以带参数",x+"="+y+"="+z)console.log("打印b",this.b)
}//执行func没绑定table域函数
func(1,2,5000)//绑定table 域给函数
var func2 = function(x,y,z){//如果这个函数想要访问tabel.b的属性 可以把a的是作用域保留到这个函数console.log("绑定域函数内",this === tabel)console.log("也可以带参数",x+"="+y+"="+z)console.log("打印b",this.b)
}.bind(tabel,1,2) //执行func2绑定
func2(5000)结果:
假装打印 绑定域函数内 false
也可以带参数 1=2=5000
打印b undefined绑定域函数内 true
也可以带参数 1=2=5000
打印b 我是一个数据

LayaAir Laya.Handle.create相关推荐

  1. Laya 笔记-LayaAir基础篇

    屏幕适配 获取浏览器DPR (Device Pixel Ratio)设备像素比:Laya.Browser.pixelRatio 逻辑宽高(逻辑分辨率的宽高):Laya.Browser.clientWi ...

  2. layaAir引擎制作游戏的图集动画、时间轴动画、和骨骼动画总结二

    一.角色序列帧.ani动画的制作 1.在项目管理器中创建动画文件 2.创建动画模板,编辑动效名称 3.编辑序列帧动画 .ani格式动画的代码控制 1.动画加载loadAnmition() 2.播放与停 ...

  3. Layaair 3D资源加载(Unity3D 导出资源)

    Layaair 3D资源加载 layaair 预加载3D资源(Unity3D 导出资源)  和  2D 资源还是有些区别的. 2D资源的预加载 https://blog.csdn.net/nicepa ...

  4. 一篇上手LayaAir的3D物理引擎

    昨天,我们分享了一篇2D物理文档<LayaAirIDE的可视化2D物理使用文档>. 今天,我们针对LayaAir引擎的初学者,以及对物理引擎使用不熟悉的开发者,再来分享一篇3D物理文档,本 ...

  5. Unity 之 LayaAir 的集成开发小程序之工具下载和基本使用

    Unity 之 LayaAir 的集成开发小程序之工具下载和基本使用 目录 Unity 之 LayaAir 的集成开发小程序之工具下载和基本使用 一.LayaAir 简介 二.工具下载 三.在Unit ...

  6. 2020,Laya最新中高级面试灵魂32问,你都知道吗?

    ##前言 上个月陆续给大家更新了cocos和unity的面试题,相信读者朋友们看了之后多多少少也有了一些收获,在之前的分享中,有部分读者粉丝一直私信阿博,让我分享一些金九银十服务器和Laya的面试题, ...

  7. Laya Game Mole

    环境配置 项目名称:打地鼠 Mole 操作系统:Windows10 游戏引擎:LayaAir2.2.0beta3 开发语言:ES6 场景规划 开始场景 StartSceen.scene 初始场景使用一 ...

  8. 将Uity中的3D场景导入Laya并在Chrome浏览器中显示

    本文将实现将Unity中的3D场景通过插件导出到Laya2.0,并在Chrome中显示出来 1:将3D场景需要的模型导入Unity,并将LayaAir插件导入 插件下载地址https://ldc2.l ...

  9. Layabox率先支持小米快游戏,LayaAir 2.0.2版本大幅提升3D性能、spine性能和内存优化、新增屏幕适配设置!...

    自上次LayaAir 2.0.1beta新增3D动画文件压缩.内存与性能优化.开放域项目创建等功能后,一个月很快就过去,在这段时间里,我们不仅在官网新增了大量的LayaAir 2.0 3D文档,优化了 ...

最新文章

  1. 网络工程师_要记录下来的一些题_3
  2. simulated annealing
  3. Shell 与Python的交互
  4. Q1全球智能机销量增长3.9% 三星苹果华为居三甲
  5. python数据分析第七章实训3_《利用Python进行数据分析·第2版》第7章 数据清洗和准备7.1 处理缺失数据7.2 数据转换7.3 字符串操作7.4 总结...
  6. 谷歌为安卓系统加入Fast Pair技术 蓝牙耳机将实现设备自动切换
  7. 86-Spark2.2源码:RDD中WithScope是什么?
  8. 911计算机专业基础综合,青岛大学10数据结构911计算机专业综合
  9. android BaseAdapter优化
  10. 剑指offer(C++版本)
  11. 最大子列和问题(C语言)
  12. stm32 NVIC中断管理实现[直接操作寄存器]
  13. Apache ShenYu源码阅读系列-Agent模块源码分析
  14. 北京国际车展直击:上汽集团近百款新车彰显雄厚实力
  15. Linux 下的Bluetooth 架构
  16. 基于matlab的脑瘤mr图像处理_基于电势能改进的区域生长脑肿瘤图像分割
  17. Gitee项目分享——学之思开源考试系统
  18. php文件更名,php如何批量给文件改名
  19. linux rc目录,linux /etc/rc.d/目录及rc.local的详解
  20. gwo算法matlab源代码,智能优化算法应用:基于GWO优化BP神经网络 - 附代码

热门文章

  1. rust:读取并显示文本文件
  2. IT民工实际工作的一天
  3. 必备的 DevOps 工具链大盘点
  4. 结合泛函极值_泛函的极值
  5. AOP的5种advice
  6. redis1:概述、安装测试、基础知识、5大数据类型
  7. CPU卡校验MAC1、计算MAC2、校验TAC的方式及流程
  8. ubuntu 黑体_Ubuntu 字体安装
  9. 候选公示!高工智能汽车金球奖第四批入围年度产品/方案亮相
  10. 杂散干扰解决办法_什么是杂散干扰,互调干扰,阻塞干扰