基于three.js實(shí)現(xiàn)簡(jiǎn)易照片墻效果
學(xué)習(xí)three.js的過(guò)程中,寫的一個(gè)簡(jiǎn)易照片墻,可以使用鼠標(biāo)滾輪上下瀏覽,采用的是移動(dòng)相機(jī)的方式。
代碼貼出來(lái),供學(xué)習(xí)這一塊的朋友們參考和指導(dǎo):
?<!DOCTYPE HTML>
<HTML>
<HEAD>
? ? <META charset="utf-8">
? ? <META name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
? ? <TITLE></TITLE>
? ? <STYLE>
? ? ? ? html, body {
? ? ? ? ? ? height: 100%;
? ? ? ? }
?
? ? ? ? body {
? ? ? ? ? ? background-color: #454545;
? ? ? ? ? ? margin: 0;
? ? ? ? ? ? overflow: hidden;
? ? ? ? ? ? background-size:cover;
? ? ? ? }
?
? ? ? ? .element {
? ? ? ? ? ? width: 240px;
? ? ? ? ? ? height: 320px;
? ? ? ? }
?
? ? ? ? .element img {
? ? ? ? ? ? position: absolute;
? ? ? ? ? ? border:none;
? ? ? ? }
?
? ? </STYLE>
?
?
</HEAD>
<BODY>
?
<script src="js/jquery-3.1.1.min.js"></script>
?
<script src="js/jquery.mousewheel.min.js"></script>
?
<SCRIPT src="js/three.min.js"></SCRIPT>
?
<SCRIPT src="js/CSS3DRenderer.js"></SCRIPT>
?
<DIV id="container"></DIV>
?
<DIV id="menu">
?
? ? <SCRIPT>
? ? ? ? var table = [];
?
? ? ? ? var camera, scene, renderer;
?
? ? ? ? createImages();
? ? ? ? init();
? ? ? ? animate();
?
? ? ? ? function init() {
? ? ? ? ? ? camera = new THREE.PerspectiveCamera( 40, window.innerWidth / window.innerHeight, 1, 10000 );
? ? ? ? ? ? camera.position.x = 0;
? ? ? ? ? ? camera.position.y = 0;
? ? ? ? ? ? camera.position.z = 3000;
? ? ? ? ? ? camera.lookAt({
? ? ? ? ? ? ? ? x : 0,
? ? ? ? ? ? ? ? y : 0,
? ? ? ? ? ? ? ? z : 0
? ? ? ? ? ? });
?
? ? ? ? ? ? scene = new THREE.Scene();
?
? ? ? ? ? ? for ( var i = 0; i < table.length ; i ++ ) {
? ? ? ? ? ? ? ? var element = document.createElement( 'div' );
? ? ? ? ? ? ? ? element.className = 'element';
? ? ? ? ? ? ? ? element.id = 'element';
?
? ? ? ? ? ? ? ? var photo = document.createElement('img');
? ? ? ? ? ? ? ? photo.className = 'photo';
? ? ? ? ? ? ? ? photo.id = table[ i ][0];
? ? ? ? ? ? ? ? photo.src='images/'+table[ i ][0]+'?t='+Math.floor((Math.random()*100)+1);
?
? ? ? ? ? ? ? ? element.appendChild( photo );
?
? ? ? ? ? ? ? ? var objectCSS = new THREE.CSS3DObject( element );
? ? ? ? ? ? ? ? objectCSS.position.x = ( table[ i ] [1] * 250 ) - 1750;
? ? ? ? ? ? ? ? objectCSS.position.y = - ( table[ i ] [2]* 330 ) + 1200;
? ? ? ? ? ? ? ? objectCSS.position.z = 0;
? ? ? ? ? ? ? ? scene.add( objectCSS );
? ? ? ? ? ? }
?
? ? ? ? ? ? renderer = new THREE.CSS3DRenderer();
? ? ? ? ? ? renderer.setSize( window.innerWidth, window.innerHeight );
? ? ? ? ? ? renderer.domElement.style.position = 'absolute';
? ? ? ? ? ? document.getElementById( 'container' ).appendChild( renderer.domElement );
?
? ? ? ? ? ? window.addEventListener( 'resize', onWindowResize, false );
? ? ? ? }
?
? ? ? ? function onWindowResize() {
?
? ? ? ? ? ? camera.aspect = window.innerWidth / window.innerHeight;
? ? ? ? ? ? camera.updateProjectionMatrix();
?
? ? ? ? ? ? renderer.setSize( window.innerWidth, window.innerHeight );
?
? ? ? ? }
?
? ? ? ? function animate() {
?
? ? ? ? ? ? renderer.render( scene, camera );
? ? ? ? ? ? requestAnimationFrame( animate );
?
? ? ? ? }
?
? ? ? ? $(window).mousewheel(function(event) {
? ? ? ? ? ? camera.position.y -= event.deltaY * event.deltaFactor;
? ? ? ? ? ? camera.position.z = 3000;
?
? ? ? ? ? ? var target = new THREE.Vector3();
? ? ? ? ? ? var _eye = new THREE.Vector3();
?
? ? ? ? ? ? _eye.subVectors( camera.position, target );
? ? ? ? ? ? camera.position.addVectors( target, _eye );
? ? ? ? ? ? camera.lookAt( _eye );
?
? ? ? ? });
?
? ? ? ? function createImages (){
? ? ? ? ? ? var files = [
? ? ? ? ? ? ? ? {"name":"0.jpg"},
? ? ? ? ? ? ? ? {"name":"1.jpg"},
? ? ? ? ? ? ? ? {"name":"2.jpg"}
? ? ? ? ? ? ];
? ? ? ? ? ? var row =1;
? ? ? ? ? ? var col = 1;
? ? ? ? ? ? for(var i = 0; i < files.length;i++)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? var file = [];
? ? ? ? ? ? ? ? file[0] = files[i]['name'];
? ? ? ? ? ? ? ? file[1] = col++;
? ? ? ? ? ? ? ? file[2] = row;
? ? ? ? ? ? ? ? table[i] = file;
? ? ? ? ? ? ? ? if(col > 13)
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? col = 1;
? ? ? ? ? ? ? ? ? ? row++;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? }
?
?
? ? </SCRIPT>
</DIV>
</BODY>
</HTML>效果圖如下:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
理解Javascript的caller,callee,call,apply區(qū)別
理解Javascript的caller,callee,call,apply區(qū)別...2007-03-03
使用JavaScript實(shí)現(xiàn)ajax的實(shí)例代碼
實(shí)現(xiàn)ajax之前必須要?jiǎng)?chuàng)建一個(gè) XMLHttpRequest 對(duì)象。這是必須的。那么對(duì)使用js實(shí)現(xiàn)ajax的代碼感興趣的朋友可以參考下本文2016-05-05
使用JavaScript實(shí)現(xiàn)彈出層效果的簡(jiǎn)單實(shí)例
下面小編就為大家?guī)?lái)一篇使用JavaScript實(shí)現(xiàn)彈出層效果的簡(jiǎn)單實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-05-05
js中eval()函數(shù)和trim()去掉字符串左右空格應(yīng)用
對(duì)于js中eval()函數(shù)的理解和寫一個(gè)函數(shù)trim()去掉字符串左右空格;對(duì)于js中eval()函數(shù)的理解是本人心得不一定正確,感興趣的朋友參考下,或許對(duì)你學(xué)習(xí)eval()函數(shù)有所幫助2013-02-02
原生javascript實(shí)現(xiàn)圖片無(wú)縫滾動(dòng)效果
這篇文章主要介紹了原生javascript實(shí)現(xiàn)圖片無(wú)縫滾動(dòng)效果的相關(guān)資料,需要的朋友可以參考下2016-02-02
javascript Array.remove() 數(shù)組刪除
下面的代碼主要是實(shí)現(xiàn)了,刪除數(shù)組中指定的值。2009-08-08

