對於我的課程之一,我需要在html5畫布中編寫3D應用程序。爲此,我選擇使用Three.js。就目前而言,我想要做的就是渲染一架簡單的飛機。我也希望能夠通過按住鼠標並拖動來沿着X軸移動相機。我根據代碼找到了here。它基本上是一個旋轉的飛機(或者相機圍繞飛機旋轉,不知道是哪一個)。我扔掉了動畫的所有代碼,併爲mousedown,mousemove等事件添加了代碼。當我加載頁面時,它會渲染飛機(無生命),但是當我嘗試使用鼠標移動它時,它仍然完全沒有響應。在我的代碼中,您可能已經注意到我改變了一些我可能不應該做的事情(使某些變量成爲全局變量並更改了某些函數名稱),以使事情順利進行,但結果保持不變。驗證並運行javascript的問題(html5 canvas)
這是我第一次使用javascript,我意識到我不能只是改變現有的代碼,並期望它的工作。我看着JavaScript驗證,我發現JSLint。我下載了記事本++的插件,並嘗試以這種方式驗證我的代碼。它不喜歡html標籤,它特別討厭我試圖導入的Three.js庫。當我將它導入爲url時,它不會導入它,並且在我下載並導入文件時它不會導入它。當我將整個庫的代碼複製到文件中時,它只是給了我很多關於庫本身的錯誤,並且在我的代碼開始之前停止驗證了一些錯誤。總結:我希望得到項目本身的一些幫助,但也希望建立一個愉快的開發環境(通過適當的驗證,不會忽略進口)。
最後,到目前爲止我的代碼:
<!DOCTYPE HTML>
<html>
<head>
<title>Canvas demo</title>
</head>
<body>
<script type="text/javascript" src="three.js">
</script>
<script type="text/javascript">
var camera;
var scene;
var plane;
var renderer;
var clickX;
var clickY;
var mousedown;
window.onload = function() {
renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
//camera
camera = new THREE.PerspectiveCamera(45, window.innerWidth/window.innerHeight, 1, 1000);
camera.position.y = -450;
camera.position.z = 400;
camera.rotation.x = 45;
//scene
scene = new THREE.Scene();
//plane
plane = new THREE.Mesh(new THREE.PlaneGeometry(300, 300), new THREE.MeshBasicMaterial({color: 0x0000ff}));
plane.overdraw = true;
scene.add(plane);
rerender();
};
window.requestAnimFrame = (function (callback){
return window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
window.oRequestAnimationFrame ||
window.msRequestAnimationFrame ||
function(callback){
window.setTimeout(callback, 1000/60);
};
})();
function rerender(){
//render
renderer.render(scene, camera);
//request new frame
requestAnimFrame(function(){
rerender();
});
}
$('#canvas').mousedown(function(e){
clickX = e.pageX - this.offsetLeft;
mousedown = true;
});
$('#canvas').mousemove(function(e){
if(mousedown) {
var xDiff = e.pageX - this.offsetLeft - clickX;
camera.position.x = xDiff;
rerender();
}
});
$('#canvas').mouseup(function(e){
mousedown = false;
});
$('#canvas').mouseleave(function(e){
mousedown = false;
});
</script>
</body>
</html>
這裏沒有太多發生:http://jsfiddle.net/mplungjan/TVWYn/ – mplungjan
jsFiddle固定包含Three.js和jQuery:http://jsfiddle.net/TVWYn/2/ - 但是,米仍然沒有看到任何飛機。 – Xenethyl
我改變了你放入html的url到庫中的URL(就像我的問題中的那個),它顯示了飛機,就像它在我的瀏覽器中一樣:http://jsfiddle.net/TVWYn/3/ – Zypp