三.js:无法补间对象位置 var(获得 null 错误),但对象本身实际上是可用的
Three.js: unable to tween objects position var (getting null error), but object itself is actually available
试图使用函数 flyUp()
position
var 定位我的 pig
对象。但是函数flyUp()
中的pig.position
正在收到null
错误。但是,对象pig
实际上在flyUp()
函数中可用。我也在Pig
和createPig
上收到错误THREE.Object3D.add: object not an instance of THREE.Object3D
.我在这里做错了什么?
这是一个笨蛋
以下是相关的 js:
function createPig(){
pig = new Pig();
scene.add(pig.threegroup);
}
Pig.prototype.update = function() {
this.wingAngle += this.wingSpeed/globalSpeedRate;
this.wingL.rotation.z = -Math.PI / 4 + Math.cos(this.wingAngle) * this.wingAmplitude;
this.wingR.rotation.z = Math.PI / 4 - Math.cos(this.wingAngle) * this.wingAmplitude;
}
function getFlyPosition(){
scene.updateMatrixWorld(true);
var position = new THREE.Vector3();
position.setFromMatrixPosition(pig.matrixWorld );
objectHeight = position.y;
flyTime = Math.round(position.y/30);
console.log('cube Y = ' + position.y + ', Flytime = ' + flyTime);
}
function flyUp(){
console.log(this.pig);
if (objectHeight < maxHeight) {
TweenLite.to(pig.position, 2.0, {y: "+=45", ease:Expo.easeOut} );
} else {
flyDown();
}
}
function flyDown(){
getFlyPosition();
TweenLite.to(pig.position, flyTime, {y: 25, ease:Sine.easeInOut} );
}
以下是完整的错误:
**error 1**
THREE.Object3D.add: object not an instance of THREE.Object3D. undefinedT
HREE.error @ three.js:35
THREE.Object3D.add @ three.js:7770
Pig @ script.js:452
createPig @ script.js:160
(anonymous function) @ script.js:553
**error 2**
Uncaught Cannot tween a null target.(anonymous function) @ TweenMax.min.js:16
D.to @ TweenMax.min.js:17
flyUp @ script.js:515
handleMouseDown @ script.js:100
**error 3**
Uncaught TypeError: Cannot read property 'elements' of undefined
THREE.Vector3.setFromMatrixPosition @ three.js:2389
getFlyPosition @ script.js:505flyDown @ script.js:522
handleMouseUp @ script.js:104
这是我能够调试的内容:
-
第一个错误是因为您没有像初始化其他对象(如
this.torso
或this.wingL
等(那样初始化this.tailSpiral
对象。此错误发生在 plnkrscript.js
文件的第 452 行。暂时注释掉此行可解决此问题。所以基本上,你需要为tailSpiral
创建一个 ThreeJS 对象,就像你正在做的其余部分一样。 -
对于第二个错误,据我所知,
pig
对象本身没有position
属性。相反,position
对象在pig
对象中可用body
对象中可用。此错误发生在行:514,也将发生在:522。因此,这些行需要看起来像这样:TweenLite.to(pig.body.position, 2.0, { y: ... });
. -
最后,第 505 行的错误也是如此。属性
matrixWorld
不能直接用于position
对象。相反,一个body
对象位于它们之间。所以这行需要看起来像:position.setFromMatrixPosition(pig.body.matrixWorld);
.
希望这有帮助。
- 引用对象中的通用值
- jQuery匹配JSON对象的部分文本
- 节点导出返回一个空对象
- 如何在Javascript中将JSon对象转换为数组
- 我可以在json对象中添加一个函数吗
- 使用JS将数组转换为json对象
- 全局变量和全局对象的属性之间有什么区别吗
- call()和apply()实际上是用来欺骗方法处理类似数组的对象的
- 执行上下文和变量对象在 JavaScript 中实际上是一回事吗?
- 为什么广播在文档中被描述为标志,而它实际上是一个对象
- 如果数组键实际上是字符串,那么数组和对象的区别是什么
- jQuery对象实际上只是init构造函数“增强”
- 如何在从 javascript 中的 json 对象中提取字符串时保留转义序列.(字符串实际上是正则表达式模式)
- 抽象脚本,以便单个页面上的每个选项卡对象实际上不会相互影响
- JavaScript-如何迭代实际上是映射的对象
- 为什么在原型链上操作属性实际上是在对象上创建它
- 为什么有些字面量实际上是对象,而另一些只是非对象字面量
- 三.js:无法补间对象位置 var(获得 null 错误),但对象本身实际上是可用的
- json格式的函数引用参数(实际上是对象字面量)
- 确定特定DOM对象是否实际上是滑块对象