今天有群友问了一个关于Layabox滤镜(laya.effect.ColorFilterSetter
,laya.effect.GlowFilterSetter
,laya.effect.BlurFilterSetter
)的问题,以前我自己使用滤镜大多是用代码实现的,编辑器很少用到,遇到的问题是 在编辑器用了滤镜组件后,运行项目报错。后面发现是滤镜的类没有注册,提前注册即可。下面记录一下这个问题的现象和解决办法。
问题现象和原因分析
- 首先我们再场景里面 放一个图片 添加滤镜
- 编辑器下,效果正常
- 接下来编译项目 运行 发现 我….F,我佛慈悲 !!居然报错了,编译是正常通过的
- 我们打印一下 信息 发现
- 原来是 类不在,那么怎么让类可以正常呢,通常的做法是在编辑器里勾选我们要导入的类的类库(js文件)
但是通过查找发现 滤镜的三个雷是 在laya.core.js文件里,也就是说,默认已经加载了,那么为什么依然找不到呢?
其实是因为没有把类注册进去,我们模仿其他类的注册方法,把我们需要的类也注册进去就可以了。
问题解决方法
- 我们看看其他的类 都是这样注册的
- 我们的类 在配置文件是这样被引用的
所以我们在我们的Main.ts(Typescript项目) 或者 Main.js(JavaScript项目)里提前注册即可:
代码如下:
1 | Laya.ClassUtils.regClass("laya.effect.ColorFilterSetter", Laya.ColorFilterSetter); |
- 然后重新编译运行
- 最后,成功运行,可以正常在编辑器里,使用我们的滤镜组件了。
--- 本文结束 The End ---