[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属性就会报未定义的错误了。。。。
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属性就会报未定义的错误了。。。。
没有找到相关结果
已邀请:
要回复问题请先登录
3 个回复
liuhang123
赞同来自:
叶秋
赞同来自:
155*****359
赞同来自: