Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Ablesons
three.js
提交
3ab6fd21
T
three.js
项目概览
Ablesons
/
three.js
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
three.js
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
3ab6fd21
编写于
5月 31, 2013
作者:
M
Mr.doob
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Second go at LoadingManager. See #3442.
上级
fc618d0f
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
118 addition
and
118 deletion
+118
-118
examples/canvas_geometry_earth.html
examples/canvas_geometry_earth.html
+10
-10
src/loaders/GeometryLoader.js
src/loaders/GeometryLoader.js
+35
-8
src/loaders/ImageLoader.js
src/loaders/ImageLoader.js
+35
-9
src/loaders/LoadingManager.js
src/loaders/LoadingManager.js
+25
-69
src/loaders/TextureLoader.js
src/loaders/TextureLoader.js
+13
-22
未找到文件。
examples/canvas_geometry_earth.html
浏览文件 @
3ab6fd21
...
...
@@ -64,17 +64,10 @@
// earth
var
earthTexture
=
new
THREE
.
Texture
();
var
loader
=
new
THREE
.
ImageLoader
();
loader
.
load
(
'
textures/land_ocean_ice_cloud_2048.jpg
'
,
function
(
image
)
{
earthTexture
.
image
=
image
;
earthTexture
.
needsUpdate
=
true
;
}
);
var
texture
=
new
THREE
.
TextureLoader
().
load
(
'
textures/land_ocean_ice_cloud_2048.jpg
'
);
var
geometry
=
new
THREE
.
SphereGeometry
(
200
,
20
,
20
);
var
material
=
new
THREE
.
MeshBasicMaterial
(
{
map
:
earthT
exture
,
overdraw
:
true
}
);
var
material
=
new
THREE
.
MeshBasicMaterial
(
{
map
:
t
exture
,
overdraw
:
true
}
);
var
mesh
=
new
THREE
.
Mesh
(
geometry
,
material
);
group
.
add
(
mesh
);
...
...
@@ -86,7 +79,14 @@
canvas
.
height
=
128
;
var
context
=
canvas
.
getContext
(
'
2d
'
);
var
gradient
=
context
.
createRadialGradient
(
canvas
.
width
/
2
,
canvas
.
height
/
2
,
0
,
canvas
.
width
/
2
,
canvas
.
height
/
2
,
canvas
.
width
/
2
);
var
gradient
=
context
.
createRadialGradient
(
canvas
.
width
/
2
,
canvas
.
height
/
2
,
0
,
canvas
.
width
/
2
,
canvas
.
height
/
2
,
canvas
.
width
/
2
);
gradient
.
addColorStop
(
0.1
,
'
rgba(210,210,210,1)
'
);
gradient
.
addColorStop
(
1
,
'
rgba(255,255,255,1)
'
);
...
...
src/loaders/GeometryLoader.js
浏览文件 @
3ab6fd21
...
...
@@ -2,9 +2,9 @@
* @author mrdoob / http://mrdoob.com/
*/
THREE
.
GeometryLoader
=
function
(
manager
)
{
THREE
.
GeometryLoader
=
function
(
crossOrigin
)
{
this
.
manager
=
(
manager
!==
undefined
)
?
manager
:
THREE
.
DefaultLoadingManager
;
this
.
crossOrigin
=
crossOrigin
;
};
...
...
@@ -12,19 +12,46 @@ THREE.GeometryLoader.prototype = {
constructor
:
THREE
.
GeometryLoader
,
load
:
function
(
url
,
callback
)
{
load
:
function
(
url
,
onLoad
,
onProgress
,
onError
)
{
var
scope
=
this
;
this
.
manager
.
add
(
url
,
'
text
'
,
function
(
event
)
{
var
request
=
new
XMLHttpRequest
();
if
(
callback
!==
undefined
)
{
if
(
onLoad
!==
undefined
)
{
callback
(
scope
.
parse
(
JSON
.
parse
(
event
.
target
.
responseText
)
)
);
request
.
addEventListener
(
'
load
'
,
function
(
event
)
{
}
onLoad
(
scope
.
parse
(
JSON
.
parse
(
event
.
target
.
responseText
)
)
);
}
);
},
false
);
}
if
(
onProgress
!==
undefined
)
{
request
.
addEventListener
(
'
progress
'
,
function
(
event
)
{
onProgress
(
event
);
},
false
);
}
if
(
onError
!==
undefined
)
{
request
.
addEventListener
(
'
error
'
,
function
(
event
)
{
onError
(
event
);
},
false
);
}
if
(
this
.
crossOrigin
!==
undefined
)
request
.
crossOrigin
=
this
.
crossOrigin
;
request
.
open
(
'
GET
'
,
url
,
true
);
request
.
send
(
null
);
},
...
...
src/loaders/ImageLoader.js
浏览文件 @
3ab6fd21
...
...
@@ -2,9 +2,9 @@
* @author mrdoob / http://mrdoob.com/
*/
THREE
.
ImageLoader
=
function
(
manager
)
{
THREE
.
ImageLoader
=
function
(
crossOrigin
)
{
this
.
manager
=
(
manager
!==
undefined
)
?
manager
:
THREE
.
DefaultLoadingManager
;
this
.
crossOrigin
=
crossOrigin
;
};
...
...
@@ -12,19 +12,45 @@ THREE.ImageLoader.prototype = {
constructor
:
THREE
.
ImageLoader
,
load
:
function
(
url
,
callback
)
{
load
:
function
(
url
,
onLoad
,
onProgress
,
onError
)
{
var
scope
=
this
;
var
image
=
document
.
createElement
(
'
img
'
)
;
this
.
manager
.
add
(
url
,
'
image
'
,
function
(
image
)
{
if
(
onLoad
!==
undefined
)
{
i
f
(
callback
!==
undefined
)
{
i
mage
.
addEventListener
(
'
load
'
,
function
(
event
)
{
callback
(
image
);
onLoad
(
this
);
}
}
,
false
);
}
);
}
if
(
onProgress
!==
undefined
)
{
image
.
addEventListener
(
'
progress
'
,
function
(
event
)
{
onProgress
(
event
);
},
false
);
}
if
(
onError
!==
undefined
)
{
image
.
addEventListener
(
'
error
'
,
function
(
event
)
{
onError
(
event
);
},
false
);
}
if
(
this
.
crossOrigin
!==
undefined
)
image
.
crossOrigin
=
this
.
crossOrigin
;
image
.
src
=
url
;
return
image
;
}
...
...
src/loaders/LoadingManager.js
浏览文件 @
3ab6fd21
...
...
@@ -2,70 +2,39 @@
* @author mrdoob / http://mrdoob.com/
*/
THREE
.
LoadingManager
=
function
()
{
THREE
.
LoadingManager
=
function
(
onLoad
,
onProgress
,
onError
)
{
var
scope
=
this
;
var
list
=
[],
cache
=
{};
var
loaders
=
{};
var
queue
=
[];
var
cache
=
{};
var
loaded
=
0
,
total
=
0
;
var
crossOrigin
=
null
;
var
loadNext
=
function
()
{
var
load
=
function
()
{
var
item
=
list
[
0
];
var
item
=
queue
[
0
];
if
(
cache
[
item
.
url
]
===
undefined
)
{
switch
(
item
.
type
)
{
case
'
image
'
:
var
image
=
document
.
createElement
(
'
img
'
);
image
.
addEventListener
(
'
load
'
,
function
(
event
)
{
if
(
item
.
onLoad
!==
undefined
)
{
item
.
onLoad
(
this
);
}
cache
[
item
.
url
]
=
this
;
onLoad
(
item
);
},
false
);
if
(
crossOrigin
!==
null
)
image
.
crossOrigin
=
crossOrigin
;
var
loader
=
loaders
[
item
.
type
];
image
.
src
=
item
.
url
;
if
(
loader
!==
undefined
)
{
break
;
loader
.
load
(
item
.
url
,
function
(
event
)
{
default
:
if
(
item
.
onLoad
!==
undefined
)
{
var
request
=
new
XMLHttpRequest
(
);
item
.
onLoad
(
event
);
request
.
addEventListener
(
'
load
'
,
function
(
event
)
{
}
if
(
item
.
onLoad
!==
undefined
)
{
cache
[
item
.
url
]
=
event
;
item
.
onLoad
(
event
);
onItemLoaded
(
item
);
}
cache
[
item
.
url
]
=
event
;
onLoad
(
item
);
},
false
);
request
.
open
(
'
GET
'
,
item
.
url
,
true
);
request
.
send
(
null
);
break
;
}
);
}
...
...
@@ -81,25 +50,25 @@ THREE.LoadingManager = function () {
}
list
.
shift
();
queue
.
shift
();
};
var
on
Loa
d
=
function
(
item
)
{
var
on
ItemLoade
d
=
function
(
item
)
{
loaded
++
;
scope
.
dispatchEvent
(
{
type
:
'
load
'
,
item
:
item
,
loaded
:
loaded
,
total
:
total
}
);
onProgress
(
item
,
loaded
,
total
);
if
(
list
.
length
>
0
)
{
if
(
queue
.
length
>
0
)
{
load
();
load
Next
();
}
if
(
loaded
===
total
)
{
scope
.
dispatchEvent
(
{
type
:
'
complete
'
}
);
onLoad
(
);
}
...
...
@@ -109,7 +78,7 @@ THREE.LoadingManager = function () {
total
++
;
list
.
push
(
{
queue
.
push
(
{
url
:
url
,
type
:
type
,
onLoad
:
onLoad
,
...
...
@@ -117,27 +86,14 @@ THREE.LoadingManager = function () {
onError
:
onError
}
);
load
();
load
Next
();
};
this
.
setCrossOrigin
=
function
(
value
)
{
this
.
addLoader
=
function
(
type
,
loader
)
{
crossOrigin
=
value
;
loaders
[
type
]
=
loader
;
};
};
THREE
.
LoadingManager
.
prototype
=
{
constructor
:
THREE
.
LoadingManager
,
addEventListener
:
THREE
.
EventDispatcher
.
prototype
.
addEventListener
,
hasEventListener
:
THREE
.
EventDispatcher
.
prototype
.
hasEventListener
,
removeEventListener
:
THREE
.
EventDispatcher
.
prototype
.
removeEventListener
,
dispatchEvent
:
THREE
.
EventDispatcher
.
prototype
.
dispatchEvent
};
THREE
.
DefaultLoadingManager
=
new
THREE
.
LoadingManager
();
src/loaders/TextureLoader.js
浏览文件 @
3ab6fd21
...
...
@@ -2,9 +2,9 @@
* @author mrdoob / http://mrdoob.com/
*/
THREE
.
TextureLoader
=
function
()
{
THREE
.
TextureLoader
=
function
(
crossOrigin
)
{
this
.
crossOrigin
=
null
;
this
.
crossOrigin
=
crossOrigin
;
};
...
...
@@ -12,35 +12,26 @@ THREE.TextureLoader.prototype = {
constructor
:
THREE
.
TextureLoader
,
addEventListener
:
THREE
.
EventDispatcher
.
prototype
.
addEventListener
,
hasEventListener
:
THREE
.
EventDispatcher
.
prototype
.
hasEventListener
,
removeEventListener
:
THREE
.
EventDispatcher
.
prototype
.
removeEventListener
,
dispatchEvent
:
THREE
.
EventDispatcher
.
prototype
.
dispatchEvent
,
load
:
function
(
url
,
onLoad
)
{
load
:
function
(
url
)
{
var
texture
=
new
THREE
.
Texture
();
var
scope
=
this
;
var
loader
=
new
THREE
.
ImageLoader
();
loader
.
crossOrigin
=
this
.
crossOrigin
;
loader
.
load
(
url
,
function
(
image
)
{
var
image
=
new
Image
();
image
.
addEventListener
(
'
load
'
,
function
()
{
var
texture
=
new
THREE
.
Texture
(
image
);
texture
.
image
=
image
;
texture
.
needsUpdate
=
true
;
scope
.
dispatchEvent
(
{
type
:
'
load
'
,
content
:
texture
}
);
},
false
);
image
.
addEventListener
(
'
error
'
,
function
()
{
if
(
onLoad
!==
undefined
)
{
scope
.
dispatchEvent
(
{
type
:
'
error
'
,
message
:
'
Couldn
\'
t load URL [
'
+
url
+
'
]
'
}
);
onLoad
(
texture
);
},
false
);
}
if
(
scope
.
crossOrigin
)
image
.
crossOrigin
=
scope
.
crossOrigin
;
}
)
;
image
.
src
=
url
;
return
texture
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录