【问题标题】:html5 3d, canvas, three.jshtml5 3d,画布,三个.js
【发布时间】:2012-09-06 07:04:42
【问题描述】:

我有以下 HTML

<canvas id="container" name ="container" width="300" height="300"></canvas>

和 JavaScript 代码

var WIDTH = 400, HEIGHT = 300;
var VIEW_ANGLE = 90, ASPECT = WIDTH / HEIGHT, NEAR = 1, FAR = 300;

renderer = new THREE.CanvasRenderer();
renderer.setSize( WIDTH, HEIGHT );

camera = new THREE.PerspectiveCamera(VIEW_ANGLE,ASPECT,NEAR,FAR);
camera.position.z = 200;

scene = new THREE.Scene();
scene.add(camera);

renderer.render( scene, camera );

document.body.appendChild( renderer.domElement );
//$('#container').appendChild(renderer.domElement);

$('#container').width(WIDTH);
$('#container').height(HEIGHT);

function getSphere() {
    var radius = 50, segments = 16, rings = 16;
    var geometry = new THREE.SphereGeometry(radius,segments,rings);
    var material = new THREE.MeshLambertMaterial({
        color: 0xCC0000
    });
    return new THREE.Mesh(geometry, material);
}

document.body.appendChild( renderer.domElement ); 工作,

但是如何用 jQuery 写入画布?

$('#container').appendChild(renderer.domElement); 不起作用。

【问题讨论】:

  • 我注意到随着信誉系统变得越来越流行,答案的质量正在慢慢下降。

标签: javascript jquery html three.js


【解决方案1】:

你可以试试这个:

$('#container').append(renderer.domElement);

$('#container') 返回一个 jQuery 对象,其中appendChild() 是一个 JavaScript 方法,它适用于 JavaScript DOM 元素,但不适用于 jQuery 对象。

因此,要追加使用 jQuery 方法 .append()


由于您的#containercanvas 元素,它不支持appendChild() 方法。相反,您可以将其更改为 div,例如:

<div id="container" name="container" style:"width:300;height:300"></div>

然后尝试:

document.getElementById('container').appendChild(renderer.domElement);

$('#container').append(renderer.domElement);

在这里,您也不需要添加&lt;canvas&gt;,因为renderer.domElementcanvas 元素。例如,在 this link 中,视图源显示 HTML 中没有 &lt;canvas&gt;。相反,它通过 JavaScript 创建一个div,将其附加到DOM,最后将renderer.domElement(即&lt;canvas&gt;)附加到div

【讨论】:

  • 这个 $('#container')[0].appendChild(renderer.domElement);也不起作用。任何人都可以提供工作提示吗?