<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<meta name="apple-moible-web-app-capable" content="yes">
<meta name="apple-moible-web-app-status-bar-style" content="black">
<title>Control gui and set Volume</title>
<meta content=" Three.js r95 声音调节 set Volume" name="keywords">
<meta content=" Three.js r95 播放声音并调节 set Volume" name="description">
<meta name="author" content="Geovin Du 涂聚文 塗聚文">
<link rel="shortcut icon" href="~/favicon.ico" type="image/x-icon" />
<link rel="icon" href="/favicon.ico" />
<link rel="bookmark" href="/favicon.ico" type="image/gif" />
<script type="text/javascript" charset="UTF-8" src="../libs/three/three.js"></script>
<script type="text/javascript" charset="UTF-8" src="../libs/three/controls/TrackballControls.js"></script>
<script type="text/javascript" src="../libs/util/Stats.js"></script>
<script type="text/javascript" src="../libs/util/dat.gui.js"></script>
<script type="text/javascript" src="js/util.js"></script>
<script type="text/javascript">
function init() {
// listen to the resize events 监听窗体大小事件
window.addEventListener('resize', onResize, false);
var uniforms; //音量调节
var fftSize = 0.2;
var stats = initStats();
//声音
var audioListener = new THREE.AudioListener();
// create a scene, that will hold all our elements such as objects, cameras and lights.
var scene = new THREE.Scene();
// create a camera, which defines where we're looking at.
var camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 0.1, 1000);
// create a render and set the size
var renderer = new THREE.WebGLRenderer();
renderer.setClearColor(new THREE.Color(0x000000));
renderer.setSize(window.innerWidth, window.innerHeight);
renderer.shadowMap.enabled = true;
// create the ground plane
var planeGeometry = new THREE.PlaneGeometry(60, 20, 1, 1);
var planeMaterial = new THREE.MeshLambertMaterial({ color: 0xffffff });
var plane = new THREE.Mesh(planeGeometry, planeMaterial);
plane.receiveShadow = true;
// rotate and position the plane
plane.rotation.x = -0.5 * Math.PI;
plane.position.x = 15;
plane.position.y = 0;
plane.position.z = 0;
// add the plane to the scene
scene.add(plane);
// create a cube
var cubeGeometry = new THREE.BoxGeometry(4, 4, 4);
var cubeMaterial = new THREE.MeshLambertMaterial({ color: 0xff0000 });
var cube = new THREE.Mesh(cubeGeometry, cubeMaterial);
cube.castShadow = true;
// position the cube
cube.position.x = -4;
cube.position.y = 3;
cube.position.z = 0;
// add the cube to the scene
scene.add(cube);
var sphereGeometry = new THREE.SphereGeometry(4, 20, 20);
var sphereMaterial = new THREE.MeshLambertMaterial({ color: 0x7777ff });
var sphere = new THREE.Mesh(sphereGeometry, sphereMaterial);
// position the sphere
sphere.position.x = 20;
sphere.position.y = 0;
sphere.position.z = 2;
sphere.castShadow = true;
// add the sphere to the scene
scene.add(sphere);
// position and point the camera to the center of the scene
camera.position.x = -30;
camera.position.y = 40;
camera.position.z = 30;
camera.lookAt(scene.position);
// 设置声音add the listener to the camera
camera.add(audioListener);
// instantiate audio object
var oceanAmbientSound = new THREE.Audio(audioListener);
// add the audio object to the scene
scene.add(oceanAmbientSound);
// instantiate a loader
var loader = new THREE.AudioLoader();
// load a resource
loader.load(
// resource URL
'../assets/audio/ping_pong.mp3',
// Function when resource is loaded
function (audioBuffer) {
// set the audio object buffer to the loaded object
oceanAmbientSound.setBuffer(audioBuffer);
oceanAmbientSound.setLoop(true); // 一次
oceanAmbientSound.setVolume(0.1);
// play the audio
oceanAmbientSound.play();
//oceanAmbientSound.stop(); //停止
},
// Function called when download progresses
function (xhr) {
console.log((xhr.loaded / xhr.total * 100) + '% loaded');
},
// Function called when download errors
function (xhr) {
console.log('An error happened');
}
);
// create an AudioAnalyser, passing in the sound and desired fftSize
var analyser = new THREE.AudioAnalyser(oceanAmbientSound, 32);
//
const format = (renderer.capabilities.isWebGL2) ? THREE.RedFormat : THREE.LuminanceFormat;
uniforms = {
tAudioData: { value: new THREE.DataTexture(analyser.data, fftSize / 2, 1, format) }
};
// get the average frequency of the sound
var data = analyser.getAverageFrequency();
var listener = new THREE.AudioListener();
camera.add(listener);
//
// add subtle ambient lighting
var ambienLight = new THREE.AmbientLight(0x353535);
scene.add(ambienLight);
// add spotlight for the shadows
var spotLight = new THREE.SpotLight(0xffffff);
spotLight.position.set(-10, 20, -5);
spotLight.castShadow = true;
scene.add(spotLight);
// add the output of the renderer to the html element
document.getElementById("webgl-output").appendChild(renderer.domElement);
// call the render function
var step = 0;
var num = 0;
//添加控件
var controls = new function () {
this.rotationSpeed = 0.02;
this.bouncingSpeed = 0.03;
this.SoundSpeed = 0.1;
};
var gui = new dat.GUI();
gui.add(controls, 'rotationSpeed', 0, 0.5);
gui.add(controls, 'bouncingSpeed', 0, 0.5);
gui.add(controls, 'SoundSpeed', 0, 0.5); //音量调节
// attach them here, since appendChild needs to be called first
var trackballControls = initTrackballControls(camera, renderer);
var clock = new THREE.Clock();
render();
function render() {
// update the stats and the controls
trackballControls.update(clock.getDelta());
stats.update();
//声音音量调节
num += controls.SoundSpeed;
oceanAmbientSound.setVolume(num);
if (num = 0)
oceanAmbientSound.stop(); //停止
// analyser.getFrequencyData();
uniforms.tAudioData.value.needsUpdate = true;
// rotate the cube around its axes
cube.rotation.x += controls.rotationSpeed;
cube.rotation.y += controls.rotationSpeed;
cube.rotation.z += controls.rotationSpeed;
// bounce the sphere up and down
step += controls.bouncingSpeed;
sphere.position.x = 20 + (10 * (Math.cos(step)));
sphere.position.y = 2 + (10 * Math.abs(Math.sin(step)));
// render using requestAnimationFrame
requestAnimationFrame(render);
renderer.render(scene, camera);
}
//根据窗体的大小改变,有一定的算法
function onResize() {
camera.aspect = window.innerWidth / window.innerHeight;
camera.updateProjectionMatrix();
renderer.setSize(window.innerWidth, window.innerHeight);
}
}
</script>
<link rel="stylesheet" href="../css/default.css">
</head>
<body>
<div id="webgl-output"></div>
<!-- Javascript code that runs our Three.js examples -->
<script type="text/javascript">
(function () {
// your page initialization code here
// the DOM will be available here
init()
})();
</script>
</body>
</html>
//
const listener = new THREE.AudioListener();
const audio = new THREE.Audio( listener );
const file = './sounds/376737_Skullbeatz___Bad_Cat_Maste.mp3';
if ( /(iPad|iPhone|iPod)/g.test( navigator.userAgent ) ) {
const loader = new THREE.AudioLoader();
loader.load( file, function ( buffer ) {
audio.setBuffer( buffer );
audio.play();
} );
} else {
const mediaElement = new Audio( file );
mediaElement.play();
audio.setMediaElementSource( mediaElement );
}
analyser = new THREE.AudioAnalyser( audio, fftSize );
//
const format = ( renderer.capabilities.isWebGL2 ) ? THREE.RedFormat : THREE.LuminanceFormat;
uniforms = {
tAudioData: { value: new THREE.DataTexture( analyser.data, fftSize / 2, 1, format ) }
};
增加一个bottom按扭操作关开声音
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<meta name="apple-moible-web-app-capable" content="yes">
<meta name="apple-moible-web-app-status-bar-style" content="black">
<title>Example 12.07 - Audio</title>
<meta content=" Three.js r95" name="keywords">
<meta content=" Three.js r95" name="description">
<meta name="author" content="Geovin Du 涂聚文 塗聚文">
<link rel="shortcut icon" href="~/favicon.ico" type="image/x-icon" />
<link rel="icon" href="/favicon.ico" />
<link rel="bookmark" href="/favicon.ico" type="image/gif" />
<script type="text/javascript" charset="UTF-8" src="../libs/three/three.js"></script>
<script type="text/javascript" charset="UTF-8" src="../libs/three/controls/FirstPersonControls.js"></script>
<script type="text/javascript" src="../libs/util/Stats.js"></script>
<script type="text/javascript" src="../libs/util/dat.gui.js"></script>
<script type="text/javascript" src="js/util.js"></script>
<script type="text/javascript">
function init() {
// listen to the resize events 监听窗体大小事件
window.addEventListener('resize', onResize, false);
var uniforms; //音量调节
var fftSize = 0.2;
var stats = initStats();
// create a scene, that will hold all our elements such as objects, cameras and lights.
var scene = new THREE.Scene();
//声音
var audioListener = new THREE.AudioListener();
// create a camera, which defines where we're looking at.
var camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 0.1, 1000);
// create a render and set the size
var renderer = new THREE.WebGLRenderer();
renderer.setClearColor(new THREE.Color(0x000000));
renderer.setSize(window.innerWidth, window.innerHeight);
renderer.shadowMap.enabled = true;
// create the ground plane
var planeGeometry = new THREE.PlaneGeometry(60, 20, 1, 1);
var planeMaterial = new THREE.MeshLambertMaterial({ color: 0xffffff });
var plane = new THREE.Mesh(planeGeometry, planeMaterial);
plane.receiveShadow = true;
// rotate and position the plane
plane.rotation.x = -0.5 * Math.PI;
plane.position.x = 15;
plane.position.y = 0;
plane.position.z = 0;
// add the plane to the scene
scene.add(plane);
// create a cube
var cubeGeometry = new THREE.BoxGeometry(4, 4, 4);
var cubeMaterial = new THREE.MeshLambertMaterial({ color: 0xff0000 });
var cube = new THREE.Mesh(cubeGeometry, cubeMaterial);
cube.castShadow = true;
// position the cube
cube.position.x = -4;
cube.position.y = 3;
cube.position.z = 0;
// add the cube to the scene
scene.add(cube);
var sphereGeometry = new THREE.SphereGeometry(4, 20, 20);
var sphereMaterial = new THREE.MeshLambertMaterial({ color: 0x7777ff });
var sphere = new THREE.Mesh(sphereGeometry, sphereMaterial);
// position the sphere
sphere.position.x = 20;
sphere.position.y = 0;
sphere.position.z = 2;
sphere.castShadow = true;
// add the sphere to the scene
scene.add(sphere);
// position and point the camera to the center of the scene
camera.position.x = -30;
camera.position.y = 40;
camera.position.z = 30;
camera.lookAt(scene.position);
// add subtle ambient lighting
var ambienLight = new THREE.AmbientLight(0x353535);
scene.add(ambienLight);
// add spotlight for the shadows
var spotLight = new THREE.SpotLight(0xffffff);
spotLight.position.set(-10, 20, -5);
spotLight.castShadow = true;
scene.add(spotLight);
// add the output of the renderer to the html element
document.getElementById("webgl-output").appendChild(renderer.domElement);
// Buttons startButton and resetButton
//var startButton = document.getElementById('buttonaudioButton');
//startButton.addEventListener('click', init);
// call the render function
var step = 0;
var ro = 0;
var controls = new function () {
this.rotationSpeed = 0.02;
this.bouncingSpeed = 0.03;
};
var gui = new dat.GUI();
gui.add(controls, 'rotationSpeed', 0, 0.5);
gui.add(controls, 'bouncingSpeed', 0, 0.5);
// attach them here, since appendChild needs to be called first
// var trackballControls = initTrackballControls(camera, renderer);
var clock = new THREE.Clock();
// Boolean for start and restart
var initAnim = true;
var runAnim = false;
var startButton = document.getElementById('buttonaudioButton');
// startButton.addEventListener('click', init, false); //加载
//bdat.gui.js.map
startButton.innerHTML = '<img src="../../gui/volumeOff.png">';
// Start Button
startButton.onclick = function StartAnimation() {
if (initAnim) {
initAnim = false;
runAnim = true;
theta = 0;
startButton.innerHTML = '<img src="../../gui/volumeOff.png">';
}
// Start and Pause
if (runAnim) {
startButton.innerHTML = '<img src="../../gui/volumeOff.png">';
runAnim = false;
} else {
startButton.innerHTML = '<img src="../../gui/volumeOn.png">';
runAnim = true;
}
}
/**/
//
var audio = new THREE.Audio(audioListener);
analyser = new THREE.AudioAnalyser(audio, 32);
//
var file = '../assets/audio/ping_pong.mp3';
if (/(iPad|iPhone|iPod)/g.test(navigator.userAgent)) {
const loader = new THREE.AudioLoader();
loader.load(file, function (buffer) {
audio.setBuffer(buffer);
audio.setLoop(true); // 一次
audio.setVolume(0.5);
audio.play();
});
} else {
const loader = new THREE.AudioLoader();
loader.load(file, function (buffer) {
audio.setBuffer(buffer);
audio.setLoop(true); // 重复 false一次
audio.setVolume(0.5);
audio.play();
});
/*
//2 不可以连续播放
const mediaElement = new Audio(file);
// mediaElement.setBuffer(buffer);
mediaElement.play();
audio.setMediaElementSource(mediaElement);
*/
}
/**/
var format = (renderer.capabilities.isWebGL2) ? THREE.RedFormat : THREE.LuminanceFormat;
uniforms = {
tAudioData: { value: new THREE.DataTexture(analyser.data, fftSize / 2, 1, format) }
};
animate();
//render();
function animate() {
requestAnimationFrame(animate);
render();
}
function render() {
// // update the stats and the controls
//trackballControls.update(clock.getDelta());
// stats.update();
//
if (runAnim) {
audio.play();
}
else {
audio.stop(); //停止}
}
analyser.getFrequencyData();
uniforms.tAudioData.value.needsUpdate = true;
ro += controls.rotationSpeed;
// rotate the cube around its axes
cube.rotation.x += controls.rotationSpeed;
cube.rotation.y += controls.rotationSpeed;
cube.rotation.z += controls.rotationSpeed;
console.log("ro:" + ro);
// bounce the sphere up and down
step += controls.bouncingSpeed;
sphere.position.x = 20 + (10 * (Math.cos(step)));
sphere.position.y = 2 + (10 * Math.abs(Math.sin(step)));
console.log("setp:" + step);
// render using requestAnimationFrame
requestAnimationFrame(render);
renderer.render(scene, camera);
}
//根据窗体的大小改变,有一定的算法
function onResize() {
camera.aspect = window.innerWidth / window.innerHeight;
camera.updateProjectionMatrix();
renderer.setSize(window.innerWidth, window.innerHeight);
}
}
</script>
<link rel="stylesheet" href="../css/default.css">
<style>
div {
display: block;
}
#fwa {
100px;
height: 100px;
left: 0;
bottom: 0;
position: absolute;
opacity: 0;
z-index: 10
}
.buttonBG {
z-index: 2;
background-color: #000;
position: absolute;
border: 1px solid #fff;
}
.button {
text-align: center;
font-size: 1em;
color: #eee;
line-height: 40px;
z-index: 40;
position: absolute;
}
#topLeft {
left: 15px;
}
#topLeft, #topRight {
130px;
height: 40px;
position: absolute;
z-index: 2;
top: 150px;
}
#topRight {
right: 15px;
}
#topLeft, #topRight {
130px;
height: 40px;
position: absolute;
z-index: 2;
top: 150px;
}
#toolBar {
590px;
height: 40px;
left: 50%;
margin-left: -145px;
bottom: 40px;
z-index: 2;
position: absolute;
color: #ff0000;
}
</style>
</head>
<body>
<div id="webgl-output"></div>
<div id="toolBar"><div id="audioButton" style="visibility: visible; left: 255px;"><div id="backgroundaudioButton" class="buttonBG" style=" 40px; height: 40px; opacity: 0.5; left: 255px;"></div><div id="buttonaudioButton" class="button" style=" 40px; height: 40px; left: 255px;"><img src="../../gui/volumeOn.png"></div></div></div>
<!-- Javascript code that runs our Three.js examples -->
<script type="text/javascript">
(function () {
// your page initialization code here
// the DOM will be available here
init()
})();
</script>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<meta name="apple-moible-web-app-capable" content="yes">
<meta name="apple-moible-web-app-status-bar-style" content="black">
<title>Control gui and set Volume</title>
<meta content=" Three.js r95 声音调节 set Volume" name="keywords">
<meta content=" Three.js r95 播放声音并调节 set Volume" name="description">
<meta name="author" content="Geovin Du 涂聚文 塗聚文">
<link rel="shortcut icon" href="~/favicon.ico" type="image/x-icon" />
<link rel="icon" href="/favicon.ico" />
<link rel="bookmark" href="/favicon.ico" type="image/gif" />
<script type="text/javascript" charset="UTF-8" src="../libs/three/three.js"></script>
<script type="text/javascript" charset="UTF-8" src="../libs/three/controls/TrackballControls.js"></script>
<script type="text/javascript" src="../libs/util/Stats.js"></script>
<script type="text/javascript" src="../libs/util/dat.gui.js"></script>
<script type="text/javascript" src="js/util.js"></script>
<script type="text/javascript">
function init() {
// listen to the resize events 监听窗体大小事件
window.addEventListener('resize', onResize, false);
var uniforms; //音量调节
var fftSize = 0.2;
var stats = initStats();
//声音
var audioListener = new THREE.AudioListener();
// create a scene, that will hold all our elements such as objects, cameras and lights.
var scene = new THREE.Scene();
// create a camera, which defines where we're looking at.
var camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 0.1, 1000);
// create a render and set the size
var renderer = new THREE.WebGLRenderer();
renderer.setClearColor(new THREE.Color(0x000000));
renderer.setSize(window.innerWidth, window.innerHeight);
renderer.shadowMap.enabled = true;
// create the ground plane
var planeGeometry = new THREE.PlaneGeometry(60, 20, 1, 1);
var planeMaterial = new THREE.MeshLambertMaterial({ color: 0xffffff });
var plane = new THREE.Mesh(planeGeometry, planeMaterial);
plane.receiveShadow = true;
// rotate and position the plane
plane.rotation.x = -0.5 * Math.PI;
plane.position.x = 15;
plane.position.y = 0;
plane.position.z = 0;
// add the plane to the scene
scene.add(plane);
// create a cube
var cubeGeometry = new THREE.BoxGeometry(4, 4, 4);
var cubeMaterial = new THREE.MeshLambertMaterial({ color: 0xff0000 });
var cube = new THREE.Mesh(cubeGeometry, cubeMaterial);
cube.castShadow = true;
// position the cube
cube.position.x = -4;
cube.position.y = 3;
cube.position.z = 0;
// add the cube to the scene
scene.add(cube);
var sphereGeometry = new THREE.SphereGeometry(4, 20, 20);
var sphereMaterial = new THREE.MeshLambertMaterial({ color: 0x7777ff });
var sphere = new THREE.Mesh(sphereGeometry, sphereMaterial);
// position the sphere
sphere.position.x = 20;
sphere.position.y = 0;
sphere.position.z = 2;
sphere.castShadow = true;
// add the sphere to the scene
scene.add(sphere);
// position and point the camera to the center of the scene
camera.position.x = -30;
camera.position.y = 40;
camera.position.z = 30;
camera.lookAt(scene.position);
// 设置声音add the listener to the camera
camera.add(audioListener);
// instantiate audio object
var oceanAmbientSound = new THREE.Audio(audioListener);
// add the audio object to the scene
scene.add(oceanAmbientSound);
// Boolean for start and restart
var initAnim = true;
var runAnim = false;
// Buttons startButton and resetButton
var startButton = document.getElementById('buttonaudioButton');
//startButton.addEventListener('click', init);
//开始加载时
startButton.innerHTML = '<img src="../../gui/volumeOff.png" alt="关" title="关">';
// Start Button
startButton.onclick = function StartAnimation() {
if (initAnim) {
initAnim = false;
runAnim = true;
theta = 0;
startButton.innerHTML = '<img src="../../gui/volumeOff.png" alt="关" title="关">';
//render();
}
// Start and Pause
if (runAnim) {
startButton.innerHTML = '<img src="../../gui/volumeOff.png" alt="关" title="关">';
runAnim = false;
// render();
} else {
startButton.innerHTML = '<img src="../../gui/volumeOn.png" alt="开" title="开">';
runAnim = true;
// render();
}
}
// instantiate a loader
var loader = new THREE.AudioLoader();
// load a resource
loader.load(
// resource URL
'../assets/audio/ping_pong.mp3',
// Function when resource is loaded
function (audioBuffer) {
// set the audio object buffer to the loaded object
oceanAmbientSound.setBuffer(audioBuffer);
oceanAmbientSound.setLoop(true); // 一次
oceanAmbientSound.setVolume(0.1);
// play the audio
oceanAmbientSound.play();
//oceanAmbientSound.stop(); //停止
},
// Function called when download progresses
function (xhr) {
console.log((xhr.loaded / xhr.total * 100) + '% loaded');
},
// Function called when download errors
function (xhr) {
console.log('An error happened');
}
);
// create an AudioAnalyser, passing in the sound and desired fftSize
var analyser = new THREE.AudioAnalyser(oceanAmbientSound, 32);
//
const format = (renderer.capabilities.isWebGL2) ? THREE.RedFormat : THREE.LuminanceFormat;
uniforms = {
tAudioData: { value: new THREE.DataTexture(analyser.data, fftSize / 2, 1, format) }
};
// get the average frequency of the sound
var data = analyser.getAverageFrequency();
var listener = new THREE.AudioListener();
camera.add(listener);
//
// add subtle ambient lighting
var ambienLight = new THREE.AmbientLight(0x353535);
scene.add(ambienLight);
// add spotlight for the shadows
var spotLight = new THREE.SpotLight(0xffffff);
spotLight.position.set(-10, 20, -5);
spotLight.castShadow = true;
scene.add(spotLight);
// add the output of the renderer to the html element
document.getElementById("webgl-output").appendChild(renderer.domElement);
// call the render function
var step = 0;
var num = 0;
//添加控件
var controls = new function () {
this.rotationSpeed = 0.02;
this.bouncingSpeed = 0.03;
this.SoundSpeed = 0.1;//初始值
};
var gui = new dat.GUI();
gui.add(controls, 'rotationSpeed', 0, 0.5); //最高值
gui.add(controls, 'bouncingSpeed', 0, 0.5);//最高值
gui.add(controls, 'SoundSpeed', 0, 5.0); //音量调节最高值
// attach them here, since appendChild needs to be called first
var trackballControls = initTrackballControls(camera, renderer);
var clock = new THREE.Clock();
animate();
//render();
function animate() {
requestAnimationFrame(animate);
render();
}
//render();
function render() {
// update the stats and the controls
// trackballControls.update(clock.getDelta());
//stats.update();
if (runAnim)
oceanAmbientSound.play()
else
oceanAmbientSound.stop(); //停止
//声音音量调节
num += controls.SoundSpeed;
oceanAmbientSound.setVolume(num);
if (num = 0)
oceanAmbientSound.stop(); //停止
// analyser.getFrequencyData();
uniforms.tAudioData.value.needsUpdate = true;
// rotate the cube around its axes
cube.rotation.x += controls.rotationSpeed;
cube.rotation.y += controls.rotationSpeed;
cube.rotation.z += controls.rotationSpeed;
// bounce the sphere up and down
step += controls.bouncingSpeed;
sphere.position.x = 20 + (10 * (Math.cos(step)));
sphere.position.y = 2 + (10 * Math.abs(Math.sin(step)));
// render using requestAnimationFrame
requestAnimationFrame(render);
renderer.render(scene, camera);
}
//根据窗体的大小改变,有一定的算法
function onResize() {
camera.aspect = window.innerWidth / window.innerHeight;
camera.updateProjectionMatrix();
renderer.setSize(window.innerWidth, window.innerHeight);
}
}
</script>
<link rel="stylesheet" href="../css/default.css">
<style>
div {
display: block;
}
#fwa {
100px;
height: 100px;
left: 0;
bottom: 0;
position: absolute;
opacity: 0;
z-index: 10
}
.buttonBG {
z-index: 2;
background-color: #000;
position: absolute;
border: 1px solid #fff;
}
.button {
text-align: center;
font-size: 1em;
color: #eee;
line-height: 40px;
z-index: 40;
position: absolute;
}
#topLeft {
left: 15px;
}
#topLeft, #topRight {
130px;
height: 40px;
position: absolute;
z-index: 2;
top: 150px;
}
#topRight {
right: 15px;
}
#topLeft, #topRight {
130px;
height: 40px;
position: absolute;
z-index: 2;
top: 150px;
}
#toolBar {
590px;
height: 40px;
left: 50%;
margin-left: -145px;
bottom: 40px;
z-index: 2;
position: absolute;
color: #ff0000;
}
</style>
</head>
<body>
<div id="webgl-output"></div>
<div id="toolBar"><div id="audioButton" style="visibility: visible; left: 255px;"><div id="backgroundaudioButton" class="buttonBG" style=" 40px; height: 40px; opacity: 0.5; left: 255px;"></div><div id="buttonaudioButton" class="button" style=" 40px; height: 40px; left: 255px;"><img src="../../gui/volumeOn.png" alt="开" title="开"></div></div></div>
<!-- Javascript code that runs our Three.js examples -->
<script type="text/javascript">
(function () {
// your page initialization code here
// the DOM will be available here
init()
})();
</script>
</body>
</html>