[英]My Javascript Code doesnt work outside of JSFiddle
出於某些奇怪的原因,我的代碼將在JSFiddle中加載並工作,但是當我嘗試在JSFiddle之外使用它時,它將無法工作。 有人知道解決方法嗎? 還是發生了什么? 鏈接到JSFiddle ... http://jsfiddle.net/56yK9/12/
If you go onto the jsfiddle link click "run" after the page has loaded.
要查看我的html文檔代碼: http : //pastebin.com/D9eeVysr
在您的html文檔中imageWidth和imageHeight等於0,因為其余的其他功能/代碼不會等到從站點加載圖像后(在開發人員工具->網絡中檢查它),這就是這里的問題,因此該精靈是不可見的..您的代碼可能需要更改。
var texture = THREE.ImageUtils.loadTexture(tUrl, {}, callback);
callback = function(texture){
........code ur stuff here...........
}
只需通過鏈接中的代碼,它將為您提供有關圖像/紋理加載的一些想法... https://stackoverflow.com/a/21277768/2089677
這里的這段代碼可能會幫助您... http://jsfiddle.net/ebeit303/e5Q3N/1/
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
<script src="http://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min.js" ></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/three.js/r61/three.min.js" ></script>
</head>
<body >
<script>
var container;
var camera, scene, renderer;
var group;
container = document.createElement('div');
document.body.appendChild(container);
$(document).ready(function() {
try {
init();
}
catch (e) {
container.innerHTML = e.toString();
}
});
function init() {
// renderer
renderer = new THREE.WebGLRenderer({antialias: true});
renderer.setClearColorHex(0xADD8E6, 1);
renderer.setSize(window.innerWidth, window.innerHeight);
container.appendChild(renderer.domElement);
camera = new THREE.PerspectiveCamera(60, window.innerWidth / window.innerHeight, 1, 2100);
camera.position.z = 1000;
scene = new THREE.Scene();
group = new THREE.Object3D();
scene.add(group);
var tUrl = "http://www.mediafire.com/convkey/7344/ra2l3kgscpvjflafg.jpg";
var texture = THREE.ImageUtils.loadTexture(tUrl, {}, spriteMesh);
window.addEventListener('resize', onWindowResize, false);
animate();
}
function spriteMesh(ashTexture) {
// create sprites
var ashMaterial = new THREE.SpriteMaterial({map: ashTexture});
var Ash = new THREE.Sprite(ashMaterial);
var imageWidth1 = ashMaterial.map.image.width;
var imageHeight1 = ashMaterial.map.image.height;
Ash.scale.set(3 * imageWidth1, 3 * imageHeight1, 1.0);
Ash.position.set(2 * imageWidth1, 2 * imageHeight1, 1.0);
group.add(Ash);
}
function onWindowResize() {
camera.aspect = window.innerWidth / window.innerHeight;
camera.updateProjectionMatrix();
renderer.setSize(window.innerWidth, window.innerHeight);
}
function animate() {
requestAnimationFrame(animate);
update();
render();
}
function update() {
camera.lookAt(scene.position);
camera.updateProjectionMatrix();
}
function render() {
renderer.render(scene, camera);
}
</script>
</body>
</html>
我想您缺少頁面加載/就緒處理程序。
這個小例子似乎至少顯示了一些東西:
http://pastebin.com/NmnTeX6Z
您可以在這里查看jsfiddle創建的更簡潔的輸出:
jsfiddle.net/56yK9/show/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.