2016-11-29 8 views
1

Я действительно новичок в трех JS и Tween JS. Я взял его для моего проекта и был разочарован в последнее время. У меня возникли проблемы с попыткой tween object1. Есть и другие объекты в сцене. object2, obeject3 и т. д. Я не уверен, должен ли я добавлять числа в mtlLoaders и objLoaders.Невозможно перемещать объект внутри OBJLoader

var mtlLoader = new THREE.MTLLoader(); 
mtlLoader.transparency = true; 
mtlLoader.setBaseUrl('assets/') 
mtlLoader.setPath('assets/'); 
mtlLoader.load('exterior.mtl', function (materials) 
{ 
materials.side = THREE.DoubleSide; 
materials.preload(); 

materials.opacity = 0 
var objLoader = new THREE.OBJLoader(); 
objLoader.setMaterials(materials); 
objLoader.setPath('assets/'); 
objLoader.load('exterior.obj', function (object1) 

{ 
object1.position.y = .01 
object1.position.z = -8 
object1.scale.set(.04, .04, .04); 
object1.castShadow = true; 
object1.receiveShadow = true; 


scene.add(object1); 


}, onProgress, onError); 

}); 

document.getElementById("engage").onclick =  function engage() 
{ 
test.start() 
}; 

Вот моя анимация. Я не хочу, чтобы твин начинал сразу же, как я хочу, чтобы он начинался, когда нажата кнопка.

var test = new TWEEN.Tween(object1.position).to({ x: 1, y: 0, z: 0 }, 2000); 
    test.easing(TWEEN.Easing.Quartic.InOut); 

твин, кажется, работает, когда я положил его после scene.add(object1) и запустить его сразу, но я хочу, чтобы начать, когда кнопка нажата. Любая помощь приветствуется.

+0

если вы 'console.log (document.getElementById («участвовать»))' это не определено? Если это так, вам нужно обернуть функцию click в событии 'window.onload' – Ronnie

ответ

0

object1 - локальная переменная в пределах функции onLoad функции обратного вызова. См. Это SO answer. А также я хотел бы добавить прослушиватель событий к кнопке в пути, как:

document.getElementById("engage").addEventListener("click", engage, false); 

function engage() { 
    test.start(); 
}; 
Смежные вопросы