Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Ablesons
three.js
提交
8673cc80
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,体验更适合开发者的 AI 搜索 >>
提交
8673cc80
编写于
8月 22, 2013
作者:
M
Mr.doob
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fixed OrbitControls domElement.body dependency. Also some code clean up.
上级
273241e1
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
35 addition
and
23 deletion
+35
-23
examples/js/controls/OrbitControls.js
examples/js/controls/OrbitControls.js
+35
-23
未找到文件。
examples/js/controls/OrbitControls.js
浏览文件 @
8673cc80
...
...
@@ -154,8 +154,10 @@ THREE.OrbitControls = function ( object, domElement ) {
// right and down are positive
this
.
pan
=
function
(
delta
)
{
if
(
scope
.
object
.
fov
!==
undefined
)
{
var
element
=
scope
.
domElement
===
document
?
scope
.
domElement
.
body
:
scope
.
domElement
;
if
(
scope
.
object
.
fov
!==
undefined
)
{
// perspective
var
position
=
scope
.
object
.
position
;
var
offset
=
position
.
clone
().
sub
(
scope
.
target
);
...
...
@@ -164,20 +166,22 @@ THREE.OrbitControls = function ( object, domElement ) {
// half of the fov is center to top of screen
targetDistance
*=
Math
.
tan
(
(
scope
.
object
.
fov
/
2
)
*
Math
.
PI
/
180.0
);
// we actually don't use screenWidth, since perspective camera is fixed to screen height
scope
.
panLeft
(
2
*
delta
.
x
*
targetDistance
/
scope
.
domElement
.
body
.
clientHeight
);
scope
.
panUp
(
2
*
delta
.
y
*
targetDistance
/
scope
.
domElement
.
body
.
clientHeight
);
}
else
if
(
scope
.
object
.
top
!==
undefined
)
{
scope
.
panLeft
(
2
*
delta
.
x
*
targetDistance
/
element
.
clientHeight
);
scope
.
panUp
(
2
*
delta
.
y
*
targetDistance
/
element
.
clientHeight
);
}
else
if
(
scope
.
object
.
top
!==
undefined
)
{
// orthographic
scope
.
panLeft
(
delta
.
x
*
(
scope
.
object
.
right
-
scope
.
object
.
left
)
/
scope
.
domElement
.
body
.
clientWidth
);
scope
.
panUp
(
delta
.
y
*
(
scope
.
object
.
top
-
scope
.
object
.
bottom
)
/
scope
.
domElement
.
body
.
clientHeight
);
}
else
{
scope
.
panLeft
(
delta
.
x
*
(
scope
.
object
.
right
-
scope
.
object
.
left
)
/
element
.
clientWidth
);
scope
.
panUp
(
delta
.
y
*
(
scope
.
object
.
top
-
scope
.
object
.
bottom
)
/
element
.
clientHeight
);
}
else
{
// camera neither orthographic or perspective - warn user
console
.
warn
(
'
WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.
'
);
}
};
this
.
dollyIn
=
function
(
dollyScale
)
{
...
...
@@ -312,25 +316,29 @@ THREE.OrbitControls = function ( object, domElement ) {
function
onMouseMove
(
event
)
{
if
(
scope
.
enabled
===
false
)
{
return
;
}
if
(
scope
.
enabled
===
false
)
return
;
event
.
preventDefault
();
var
element
=
scope
.
domElement
===
document
?
scope
.
domElement
.
body
:
scope
.
domElement
;
if
(
state
===
STATE
.
ROTATE
)
{
if
(
scope
.
noRotate
===
true
)
{
return
;
}
if
(
scope
.
noRotate
===
true
)
return
;
rotateEnd
.
set
(
event
.
clientX
,
event
.
clientY
);
rotateDelta
.
subVectors
(
rotateEnd
,
rotateStart
);
// rotating across whole screen goes 360 degrees around
scope
.
rotateLeft
(
2
*
Math
.
PI
*
rotateDelta
.
x
/
scope
.
domElement
.
body
.
clientWidth
*
scope
.
rotateSpeed
);
scope
.
rotateLeft
(
2
*
Math
.
PI
*
rotateDelta
.
x
/
element
.
clientWidth
*
scope
.
rotateSpeed
);
// rotating up and down along whole screen attempts to go 360, but limited to 180
scope
.
rotateUp
(
2
*
Math
.
PI
*
rotateDelta
.
y
/
scope
.
domElement
.
body
.
clientHeight
*
scope
.
rotateSpeed
);
scope
.
rotateUp
(
2
*
Math
.
PI
*
rotateDelta
.
y
/
element
.
clientHeight
*
scope
.
rotateSpeed
);
rotateStart
.
copy
(
rotateEnd
);
}
else
if
(
state
===
STATE
.
DOLLY
)
{
if
(
scope
.
noZoom
===
true
)
{
return
;
}
if
(
scope
.
noZoom
===
true
)
return
;
dollyEnd
.
set
(
event
.
clientX
,
event
.
clientY
);
dollyDelta
.
subVectors
(
dollyEnd
,
dollyStart
);
...
...
@@ -348,7 +356,8 @@ THREE.OrbitControls = function ( object, domElement ) {
dollyStart
.
copy
(
dollyEnd
);
}
else
if
(
state
===
STATE
.
PAN
)
{
if
(
scope
.
noPan
===
true
)
{
return
;
}
if
(
scope
.
noPan
===
true
)
return
;
panEnd
.
set
(
event
.
clientX
,
event
.
clientY
);
panDelta
.
subVectors
(
panEnd
,
panStart
);
...
...
@@ -361,11 +370,12 @@ THREE.OrbitControls = function ( object, domElement ) {
// Greggman fix: https://github.com/greggman/three.js/commit/fde9f9917d6d8381f06bf22cdff766029d1761be
scope
.
update
();
}
function
onMouseUp
(
/* event */
)
{
if
(
scope
.
enabled
===
false
)
{
return
;
}
if
(
scope
.
enabled
===
false
)
return
;
// Greggman fix: https://github.com/greggman/three.js/commit/fde9f9917d6d8381f06bf22cdff766029d1761be
scope
.
domElement
.
removeEventListener
(
'
mousemove
'
,
onMouseMove
,
false
);
...
...
@@ -377,8 +387,7 @@ THREE.OrbitControls = function ( object, domElement ) {
function
onMouseWheel
(
event
)
{
if
(
scope
.
enabled
===
false
)
{
return
;
}
if
(
scope
.
noZoom
===
true
)
{
return
;
}
if
(
scope
.
enabled
===
false
||
scope
.
noZoom
===
true
)
return
;
var
delta
=
0
;
...
...
@@ -413,6 +422,7 @@ THREE.OrbitControls = function ( object, domElement ) {
// pan a pixel - I guess for precise positioning?
// Greggman fix: https://github.com/greggman/three.js/commit/fde9f9917d6d8381f06bf22cdff766029d1761be
var
needUpdate
=
false
;
switch
(
event
.
keyCode
)
{
case
scope
.
keys
.
UP
:
...
...
@@ -488,6 +498,8 @@ THREE.OrbitControls = function ( object, domElement ) {
event
.
preventDefault
();
event
.
stopPropagation
();
var
element
=
scope
.
domElement
===
document
?
scope
.
domElement
.
body
:
scope
.
domElement
;
switch
(
event
.
touches
.
length
)
{
case
1
:
// one-fingered touch: rotate
...
...
@@ -498,9 +510,9 @@ THREE.OrbitControls = function ( object, domElement ) {
rotateDelta
.
subVectors
(
rotateEnd
,
rotateStart
);
// rotating across whole screen goes 360 degrees around
scope
.
rotateLeft
(
2
*
Math
.
PI
*
rotateDelta
.
x
/
scope
.
domElement
.
body
.
clientWidth
*
scope
.
rotateSpeed
);
scope
.
rotateLeft
(
2
*
Math
.
PI
*
rotateDelta
.
x
/
element
.
clientWidth
*
scope
.
rotateSpeed
);
// rotating up and down along whole screen attempts to go 360, but limited to 180
scope
.
rotateUp
(
2
*
Math
.
PI
*
rotateDelta
.
y
/
scope
.
domElement
.
body
.
clientHeight
*
scope
.
rotateSpeed
);
scope
.
rotateUp
(
2
*
Math
.
PI
*
rotateDelta
.
y
/
element
.
clientHeight
*
scope
.
rotateSpeed
);
rotateStart
.
copy
(
rotateEnd
);
break
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录