Egret社区

[Egret Engine] 官方particle代码在微端运行报错

2018-9-7 19:46
12108
产品 Egret Engine 版本 5.2.8
复现概率 100% 平台 Android 8.0
复现步骤 1、将particle demo编译成html5发布;
2、将html5发布的代码拷到android工程assets目录的game目录里;
3、在真机上运行demo
问题描述 加载官方5.2.8第三方库中的particle demo报错,微端版本为1.10
错误代码 :WARNING:JS Error: TypeError: a.$nativeDisplayObject.addCallBack is not a function
at i [as constructor] (http://tool.egret-labs.org/Weiduan/game/js/particle.min_27fe451d.js:1:1369)
at new i (http://tool.egret-labs.org/Weiduan/game/js/particle.min_27fe451d.js:1:9235)
at e.changeEffect (http://tool.egret-labs.org/Weiduan/game/js/main.min_6e37b56f.js:3:77)
at e.createGameScene (http://tool.egret-labs.org/Weiduan/game/js/main.min_6e37b56f.js:2:31666)
at e.r.$notifyListener (http://tool.egret-labs.org/Weiduan/game/js/egret.min_3271047f.js:1:2646)
at e.r.dispatchEvent (http://tool.egret-labs.org/Weiduan/game/js/egret.min_3271047f.js:1:2418)
at e.r.dispatchEvent (http://tool.egret-labs.org/Weiduan/game/js/egret.min_3271047f.js:1:22707)
at e.r.dispatchEventWith (http://tool.egret-labs.org/Weiduan/game/js/egret.min_3271047f.js:1:3008)
at e.i.$doAddChild (http://tool.egret-labs.org/Weiduan/game/js/egret.min_3271047f.js:1:30894)
at e.i.addChild (http://tool.egret-labs.org/Weidu
BUG截图
本帖最后由 encyc_k 于 2018-9-8 08:44 编辑


分享到 :
0 人收藏

8 个回复

倒序浏览
encyc_k  登堂入室 | 2018-9-7 19:47:36
本帖最后由 encyc_k 于 2018-9-8 10:29 编辑

官方的shader demo在android微端真机上也报错,是runtime还不支持shader吗?
encyc_k  登堂入室 | 2018-9-11 21:04:38
TypeError: a.$nativeDisplayObject.addCallBack is not a function,现在发现android微端好多地方报这个错,都是在升级1.10后出现的

@Wander
encyc_k  登堂入室 | 2018-9-12 18:33:31
@Nasus 请帮忙看看吧, runtime不能运行粒子效果很蛋疼啊
李八疼  初窥堂奥 | 2018-12-7 17:49:38
今天也遇到了这个问题,看了下源码,在ParticleSystem.ts中发现一段代码,看起来像是使用了egret.nativeRender的原因。
        constructor(texture: egret.Texture, emissionRate: number) {
            super();
            if (egret.nativeRender) {
                this.initConfig(emissionRate, 0, 0);
                this.changeTexture(texture);
                this.$nativeDisplayObject.addCallBack("on" + egret.Event.COMPLETE, ()=>{
                    this.dispatchEventWith(egret.Event.COMPLETE);
                }, this);
            }
            else {
                this.emissionRate = emissionRate;
                this.texture = texture;
                this.$renderNode = new egret.sys.GroupNode();
                //不清除绘制数据
                this.$renderNode.cleanBeforeRender = function () { };
            }

        }


然后在android中禁用即可正常使用,还没测试性能。
nativeAndroid.config.disableNativeRender = true;// 是否禁用原生渲染加速
encyc_k  登堂入室 | 2018-12-7 23:15:01
李八疼 发表于 2018-12-7 17:49
今天也遇到了这个问题,看了下源码,在ParticleSystem.ts中发现一段代码,看起来像是使用了egret.nativeRen ...

我用新的粒子库配新的引擎版本,可以正常使用native的粒子系统了,你也可以试试
96拉菲  登堂入室 | 2019-5-21 15:09:51
encyc_k 发表于 2018-12-7 23:15
我用新的粒子库配新的引擎版本,可以正常使用native的粒子系统了,你也可以试试 ...

朋友你用的哪个版本,引擎?  最新粒子是5.2.13,引擎是5.2.19 两个不匹配,运行总报错说“粒子库版本过低,在原生渲染加速中不能播放,请升级粒子库版本”
encyc_k  登堂入室 | 2019-5-23 23:53:50
96拉菲 发表于 2019-5-21 15:09
朋友你用的哪个版本,引擎?  最新粒子是5.2.13,引擎是5.2.19 两个不匹配,运行总报错说“粒子库版本过低 ...

你到git上下一个最新的粒子库,应该就可以了。我前两天也遇到这个问题,升级了一下粒子库就行了
96拉菲  登堂入室 | 2019-5-29 10:40:46
encyc_k 发表于 2019-5-23 23:53
你到git上下一个最新的粒子库,应该就可以了。我前两天也遇到这个问题,升级了一下粒子库就行了 ...

我下的最新库,没起作用,后来关闭原生加速渲染粒子动画才出来,disableNativeRender = true
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|京网文[2014]0791-191号|京ICP证150115号|Egret社区 ( 京ICP备14025619号 )

Powered by Discuz! X3.4 © 2001-2019 Comsenz Inc.

返回顶部