我https://playground.babylonjs.com/#7QN6ZM#54。在控制台窗口中,您将注意到以下错误跟踪;**它似乎存在一个问题,即将巴比伦场景传递给JS类,然后尝试从JS类的上下文中播放动画。x1c 0d1x
奇怪的是,正如在操场上所指出的,当我直接从第一个类函数尝试该过程时(即非动态且不使用自定义AnimationSequencer类),一切都按预期工作。
我https://playground.babylonjs.com/#7QN6ZM#54。在控制台窗口中,您将注意到以下错误跟踪;**它似乎存在一个问题,即将巴比伦场景传递给JS类,然后尝试从JS类的上下文中播放动画。x1c 0d1x
奇怪的是,正如在操场上所指出的,当我直接从第一个类函数尝试该过程时(即非动态且不使用自定义AnimationSequencer类),一切都按预期工作。
2条答案
按热度按时间9jyewag01#
这个错误似乎与
ObjAnimationSequence
类以及为boxAnimationSequence
设置positionKeys
和rotationKeys
的方式有关。在
boxAnimationSequence
中,您将rotationKeys
设置为如下所示:字符串
每个关键帧的
value
都是一个BABYLON.Vector3
对象,但是当你为boxAnimationSequence
设置positionKeys
时,你直接将box.position
,也就是一个BABYLON.Vector3
,分配给每个关键帧的value
字段;型
如果
box.position
没有正确初始化,或者在代码中的其他地方修改了它,这可能会导致问题。box.position
可能在某个时候被转换为字符串,这将导致Babylon.js尝试在其上创建_isDirty
属性时出现错误。这种方法可以帮助你修复错误。首先你需要做的是为
boxPosKeys
中的每个关键帧创建一个新的BABYLON.Vector3
对象,就像你在boxRotKeys
中做的那样,以确保每个关键帧都有自己唯一的BABYLON.Vector3
对象,这应该可以防止它在代码的其他地方被修改。boxPosKeys
代码与boxRotKeys
相同;型
如果上面的代码没有修复错误,你可能需要做一些调试来找出字符串是在哪里创建的。你可以
console.log()
box.position
的类型和值以及每个关键帧的值字段。这应该有助于你识别字符串来自哪里。toe950272#
我已经找到了错误的来源。这是我的疏忽;在声明了一个动画来更新position属性的地方,数据类型也必须指定为Vector 3:
字符串
我之前一直错误地使用BABYLON.Animation.ANIMATIONTYPE_FLOAT,因为我之前一直在独立地为每个轴制作动画,分别使用position.x,position.y和position.z(它们是浮点值),而不仅仅是position。