- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我开始学习使用 Threejs 创建旋转 3D 立方体。我关注了this教程,但为对象的旋转设置动画不起作用。
在此之前,我收到旋转未定义的错误。我在 animate() 中使用以下代码解决了这个问题:
var manager = new THREE.LoadingManager();
manager.onLoad = function() {
root.render();
requestAnimationFrame( root.animate );
}
只是现在什么也没发生。我也没有收到任何错误。有谁知道缺少什么或我做错了什么?
App.cubeController = {
camera: null,
scene: null,
renderer: null,
mesh: null,
// Setup for render
init: function(){
// Development
console.log('init cubeController');
// Declare variables
var root = this;
root.scene = new THREE.Scene(); // Setting up the scene
root.camera = new THREE.PerspectiveCamera( 70, window.innerWidth / window.innerHeight, 1, 1000); // Set dimensions of the stage
var light = new THREE.DirectionalLight( 0xffffff );
light.position.set( 0, 1, 1 ).normalize();
root.scene.add(light);
var geometry = new THREE.CubeGeometry(10, 10, 10); // Create the object
var material = new THREE.MeshPhongMaterial( { ambient: 0x050505, color: 0x0033ff, specular: 0x555555, shininess: 30 } );
root.mesh = new THREE.Mesh(geometry, material);
root.mesh.position.z = -50
root.scene.add( root.mesh );
root.renderer = new THREE.WebGLRenderer();
root.renderer.setSize( window.innerWidth, window.innerHeight );
$('body').append( root.renderer.domElement );
window.addEventListener( 'resize', root.onWindowResize, false );
root.render();
root.animate();
},
// Update the state of each object in the scene
animate: function() {
// Development
console.log("init Animate");
var root = this;
root.mesh.rotation.x += .05;
root.mesh.rotation.y += .05;
var manager = new THREE.LoadingManager();
manager.onLoad = function() {
root.render();
requestAnimationFrame( root.animate );
}
},
// Render the result
render: function() {
// Development
console.log("init Render");
var root = this;
root.renderer.render( root.scene, root.camera );
},
// OnResize change camera aspect
onWindowResize: function() {
var root = this;
root.camera.aspect = window.innerWidth / window.innerHeight;
root.camera.updateProjectionMatrix();
root.renderer.setSize( window.innerWidth, window.innerHeight );
root.render();
}
}
最佳答案
每个动画完成后,您必须调用root.render
函数。因此,请在 root.animate
函数中调用 root.render
函数。像这样 -
var root = this;
animate: function() {
// Development
console.log("init Animate");
requestAnimationFrame( root.animate );
root.mesh.rotation.x += .05;
root.mesh.rotation.y += .05;
root.render();
},
另外,我不知道为什么你需要LoadingManager
。我认为它不应该用在会被重复调用的animate
函数中。
编辑:您必须在函数外部定义root
变量。您已在每个函数中定义了此变量。相反,您必须在 CubeController 中定义它。
关于javascript - Threejs 动画对象不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42971759/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!