[LayaNative 2.0]layaNative测试运行原生app时,laya3D解析动画处报错

通过laya提供的原生运行器进行测试时,发现laya3d骨骼动画解析直接报错,错误原因是在laya.d3.js库中的13543
AnimationClipParser04.READ_ANIMATIONS方法下的
var floatArrayKeyframe = new Vector3Keyframe();
大致原因是。引擎在进入游戏前会判断window.conch是否是原生,,如果是原生。。在laya.d3.js库中的17577
                if (Render.supportWebGLPlusAnimation) {
                    avatar.prototype._cloneDatasToAnimator = avatar.prototype._cloneDatasToAnimatorNative;
                /*__JS__ */FloatKeyframe = window.conchFloatKeyframe;
                /*__JS__ */Vector3Keyframe = window.conchFloatArrayKeyframe;
                /*__JS__ */QuaternionKeyframe = window.conchFloatArrayKeyframe;
                /*__JS__ */KeyframeNode = window.conchKeyframeNode;
                /*__JS__ */KeyframeNodeList = window.conchKeyframeNodeList;
可以看到Vector3Keyframe类在原生的情况下是直接被window.conchFloatArrayKeyframe替换了。。
这个替换类是在Laya原生下的一个叫apploader.js的类中定义的apploader.js关于该类的定义如下
class conchFloatArrayKeyframe {
    constructor() {
        this._nativeObj = new _conchFloatArrayKeyframe();
    }
    set time(value) {
        this._nativeObj.setTime(value);
    }
    get time() {
        return this._nativeObj.getTime();
    }
这个 new _conchFloatArrayKeyframe()我不知道是哪来的。。整个脚本中也只出现了一次。。。不知道是否还需要引入其他包
var floatArrayKeyframe=new Vector3Keyframe();
                            node._setKeyframeByIndex(j,floatArrayKeyframe);
                            startTime=floatArrayKeyframe.time=startTimeTypes[reader.getUint16()];
                            var inTangent=floatArrayKeyframe.inTangent;
                            var outTangent=floatArrayKeyframe.outTangent;
                            var value=floatArrayKeyframe.value;
                            inTangent.x=reader.getFloat32();
                            inTangent.y=reader.getFloat32();
                            inTangent.z=reader.getFloat32();
                            outTangent.x=reader.getFloat32();
                            outTangent.y=reader.getFloat32();
                            outTangent.z=reader.getFloat32();
                            value.x=reader.getFloat32();
                            value.y=reader.getFloat32();
                            value.z=reader.getFloat32();
 
因为获取到的floatArrayKeyframe是空的。。所以他的x y z属性就会报未定义的错误了。。。。
已邀请:

liuhang123

赞同来自:

我也遇到同样的问题。打包APP后,运行骨骼动画报错,一直无解.

叶秋

赞同来自:

解决了。每次都得自己解决。。。无语

155*****359

赞同来自:

请问大哥,3d项目打包app后运行,创建3d模型和场景就会报错是因为什么原因呢?是不是3d项目要设置一些特殊的东西呀?

要回复问题请先

商务合作
商务合作