Threejs基本概念(六)加载器

JavaScript025

Threejs基本概念(六)加载器,第1张

Loader

FileLoader

FontLoader

ImageLoader

JSONLoader

Cache

缓存

MaterialLoader

ObjectLoader

TextureLoader

AnimationLoader

用于以JSON格式加载动画的类。

AudioLoader

加载

BufferGeometryLoader

用于加载BufferGeometry的装载器。这在内部使用FileLoader来加载文件。

MaterialLoader

用于以JSON格式加载素材的加载器

ObjectLoader

用于加载JSON资源的加载程序,此加载程序无法加载几何

TextureLoader

基类

CompressedTextureLoader

基于块的纹理加载器(dds,pvr,...)的抽象基类

CubeTextureLoader

立方体加载器

DataTextureLoader

抽象基类加载通用二进制纹理格式(rgbe,hdr,...)

MaterialLoader

用于以JSON格式加载素材的加载器

ObjectLoader

TextureLoader

BabylonLoader

.babylon

ColladaLoader

.dae

GLTF2Loader

.gltf

MTLLoader

.mtl资源的装载器 (材质)

OBJLoader

.obj资源的装载器 (3d对象)

OBJLoader2

.obj资源的装载器(3d对象)

WWOBJLoader2

用于在web worker中加载.obj资源的装载器。(3d对象)

PCDLoader

用于.pcd文件的加载程序。加载ascii和二进制。不支持压缩的二进制文件(3d对象)

PDBLoader

.pdb是geometryAtoms,geometryBonds和JSON结构。

SVGLoader

TGALoader

加载.tga文件 纹理的类。

requireJS 是用JavaScript编写的JS框架,主要功能是可以按不同的先后依赖关系对 JavaScript 等文件的进行加载工作,可简单理解为JS文件的加载器,它非常适合在浏览器中使用,它可以确保所依赖的JS文件加载完成之后再加载当前的JS文件,这在大量使用JS文件的项目中可确保各个JS文件的先后加载顺序,确保避免了以前因某些原因某个文件加载慢而导致其它加载快的文件需要依赖其某些功能而出现某函数或某变量找不到的问题,这点非常有用,也是 requireJS 的主要价值所在吧;

现在常用的一种javascript的方法是在当前的html文档中插入一个script标签,在标签中引入script脚本Js代码var__includes__=newArrayArray.prototype.indexOf=function(obj){for(vari=0i<this.lengthi++){if(this[i]==obj)returni}return-1}Array.prototype.add=function(obj){this[this.length]=obj}functioninclude_js(js){if(__includes__.indexOf(js)-1)return__includes__.add(js)varhead=document.getElementsByTagName('head')[0]script=document.createElement('script')script.src=jsscript.type='text/javascript'head.appendChild(script)}当你只是在你的htmlw文档中使用这个方法的时候,一切OK,这其实是script的标签的一种快捷的写法而已。但是,如果你在一个javascript使用这个方法,问题就来了,比如我在test.js中使用include_js("test1.js"),在test1.js中有一个变量test1是在test.js中要使用的,在webkit中尽然出现了test1变量未定义的错误,我不知道ie和firefox是否有这种问题,我想可能是include_js本身不是同步执行导致的,所以我只好使用以下方法来完善inlcude_jsJs代码var__includes__=newArrayArray.prototype.indexOf=function(obj){for(vari=0i<this.lengthi++){if(this[i]==obj)returni}return-1}Array.prototype.add=function(obj){this[this.length]=obj}functionxhttp(url,callback){varrequest=nullif(typeofXMLHttpRequest!='undefined'){request=newXMLHttpRequest()}elseif(typeofActiveXObject!='undefined'){request=newActiveXObject('Microsoft.XMLHTTP')}request.open('GET',url,true)request.onreadystatechange=function(){if(request.readyState==4){callback(request.responseText)}}request.send(null)}functionadd_scripts(jss,callback){varfunc=function(jss,idx,callback){if(idx==jss.length){callback()return}add_script(jss[idx],function(){func(jss,++idx,callback)})}func(jss,0,callback)}functionadd_script(js,callback){if(__includes__.indexOf(js)-1){callback()return}__includes__.add(js)xhttp(js,function(js_content){varhead=document.getElementsByTagName('head')[0]script=document.createElement('script')head.appendChild(script)// script.innerHTML=js_content//原帖是这个...本人测试这行..无效 必须用text属性赋值script.defer=truescript.type='text/javascript'script.language='javascript'//本人测试修正..添加script.text=js_content//本人测试修正..添加//zfrong 09.5.20callback()})}functioninclude_js(js){if(__includes__.indexOf(js)-1)return__includes__.add(js)varhead=document.getElementsByTagName('head')[0]script=document.createElement('script')script.src=jsscript.type='text/javascript'head.appendChild(script)}当我在html文档中引入的时候,我用 include_js,当我在js文件中引入js时候,我使用add_scripts,add_scriptJs代码add_scripts(['test1.js','test2.js']),add_scripts方法使用了xmlhttp来读入js内容,并把读入的内容的写到一个新的script标签内,读入是异步执行的,当执行完毕后,会调用callback、