Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Ablesons
three.js
提交
5ec2f833
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 搜索 >>
提交
5ec2f833
编写于
11月 29, 2016
作者:
M
Mr.doob
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
DragControls: Use custom event system with EventDispatcher.
上级
9dbbf18f
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
50 addition
and
67 deletion
+50
-67
examples/js/controls/DragControls.js
examples/js/controls/DragControls.js
+50
-67
未找到文件。
examples/js/controls/DragControls.js
浏览文件 @
5ec2f833
/*
* @author zz85 / https://github.com/zz85
* @author mrdoob / http://mrdoob.com
* Running this will allow you to drag three.js objects around the screen.
*/
THREE
.
DragControls
=
function
(
_camera
,
_objects
,
_domElement
)
{
THREE
.
DragControls
=
function
(
_camera
,
_objects
,
_domElement
)
{
var
_raycaster
=
new
THREE
.
Raycaster
();
...
...
@@ -12,74 +14,27 @@ THREE.DragControls = function( _camera, _objects, _domElement ) {
var
p3subp1
=
new
THREE
.
Vector3
();
var
targetposition
=
new
THREE
.
Vector3
();
var
zerovector
=
new
THREE
.
Vector3
();
this
.
enabled
=
false
;
/* Custom Event Handling */
var
_listeners
=
{
};
var
me
=
this
;
this
.
on
=
function
(
event
,
handler
)
{
var
scope
=
this
;
if
(
!
_listeners
[
event
]
)
_listeners
[
event
]
=
[];
_listeners
[
event
].
push
(
handler
);
return
me
;
};
this
.
setObjects
=
function
(
objects
)
{
this
.
off
=
function
(
event
,
handler
)
{
if
(
Array
.
isArray
(
objects
)
===
false
)
{
var
l
=
_listeners
[
event
];
if
(
!
l
)
return
me
;
if
(
l
.
indexOf
(
handler
)
>
-
1
)
{
l
.
splice
(
handler
,
1
);
console
.
error
(
'
THREE.DragControls.setObjects() expects an Array.
'
);
return
;
}
return
me
;
};
var
notify
=
function
(
event
,
data
,
member
)
{
var
l
=
_listeners
[
event
];
if
(
!
l
)
return
;
if
(
!
member
)
{
for
(
var
i
=
0
;
i
<
l
.
length
;
i
++
)
{
l
[
i
](
data
);
}
}
};
this
.
setObjects
=
function
(
objects
)
{
if
(
objects
instanceof
THREE
.
Scene
)
{
_objects
=
objects
.
children
;
}
else
{
_objects
=
objects
;
}
_objects
=
objects
;
};
this
.
setObjects
(
_objects
);
this
.
activate
=
function
()
{
this
.
activate
=
function
()
{
_domElement
.
addEventListener
(
'
mousemove
'
,
onDocumentMouseMove
,
false
);
_domElement
.
addEventListener
(
'
mousedown
'
,
onDocumentMouseDown
,
false
);
...
...
@@ -87,7 +42,7 @@ THREE.DragControls = function( _camera, _objects, _domElement ) {
};
this
.
deactivate
=
function
()
{
this
.
deactivate
=
function
()
{
_domElement
.
removeEventListener
(
'
mousemove
'
,
onDocumentMouseMove
,
false
);
_domElement
.
removeEventListener
(
'
mousedown
'
,
onDocumentMouseDown
,
false
);
...
...
@@ -95,9 +50,9 @@ THREE.DragControls = function( _camera, _objects, _domElement ) {
};
this
.
dispose
=
function
()
{
this
.
dispose
=
function
()
{
m
e
.
deactivate
();
scop
e
.
deactivate
();
};
...
...
@@ -111,10 +66,10 @@ THREE.DragControls = function( _camera, _objects, _domElement ) {
_mouse
.
y
=
-
(
event
.
clientY
/
_domElement
.
height
)
*
2
+
1
;
_raycaster
.
setFromCamera
(
_mouse
,
_camera
);
var
ray
=
_raycaster
.
ray
;
var
ray
=
_raycaster
.
ray
;
if
(
_selected
&&
m
e
.
enabled
)
{
if
(
_selected
&&
scop
e
.
enabled
)
{
var
normal
=
_selected
.
normal
;
...
...
@@ -136,7 +91,7 @@ THREE.DragControls = function( _camera, _objects, _domElement ) {
targetposition
.
copy
(
ray
.
direction
).
multiplyScalar
(
u
).
add
(
ray
.
origin
).
sub
(
_offset
);
// _selected.object.position.copy(targetposition);
var
xLock
,
yLock
,
zLock
=
false
;
var
xLock
,
yLock
;
var
moveX
,
moveY
,
moveZ
;
...
...
@@ -164,7 +119,7 @@ THREE.DragControls = function( _camera, _objects, _domElement ) {
if
(
moveY
)
_selected
.
object
.
position
.
y
=
targetposition
.
y
;
if
(
moveZ
)
_selected
.
object
.
position
.
z
=
targetposition
.
z
;
notify
(
'
drag
'
,
_selected
);
scope
.
dispatchEvent
(
{
type
:
'
drag
'
,
object
:
_selected
}
);
return
;
...
...
@@ -177,11 +132,13 @@ THREE.DragControls = function( _camera, _objects, _domElement ) {
_domElement
.
style
.
cursor
=
'
pointer
'
;
_hovered
=
intersects
[
0
];
notify
(
'
hoveron
'
,
_hovered
);
scope
.
dispatchEvent
(
{
type
:
'
hoveron
'
,
object
:
_hovered
}
);
}
else
{
notify
(
'
hoveroff
'
,
_hovered
);
scope
.
dispatchEvent
(
{
type
:
'
hoveroff
'
,
object
:
_hovered
}
);
_hovered
=
null
;
_domElement
.
style
.
cursor
=
'
auto
'
;
...
...
@@ -205,12 +162,12 @@ THREE.DragControls = function( _camera, _objects, _domElement ) {
_selected
=
intersects
[
0
];
_selected
.
ray
=
ray
;
_selected
.
normal
=
normal
;
_selected
.
normal
=
normal
;
_offset
.
copy
(
_selected
.
point
).
sub
(
_selected
.
object
.
position
);
_domElement
.
style
.
cursor
=
'
move
'
;
notify
(
'
dragstart
'
,
_selected
);
scope
.
dispatchEvent
(
{
type
:
'
dragstart
'
,
object
:
_selected
}
);
}
...
...
@@ -223,7 +180,7 @@ THREE.DragControls = function( _camera, _objects, _domElement ) {
if
(
_selected
)
{
notify
(
'
dragend
'
,
_selected
);
scope
.
dispatchEvent
(
{
type
:
'
dragend
'
,
object
:
_selected
}
);
_selected
=
null
;
}
...
...
@@ -232,4 +189,30 @@ THREE.DragControls = function( _camera, _objects, _domElement ) {
}
// Backward compatibility
this
.
on
=
function
(
type
,
listener
)
{
console
.
warn
(
'
THREE.DragControls: on() has been deprecated. Use addEventListener() instead.
'
);
scope
.
addEventListener
(
type
,
listener
);
};
this
.
off
=
function
(
type
,
listener
)
{
console
.
warn
(
'
THREE.DragControls: off() has been deprecated. Use removeEventListener() instead.
'
);
scope
.
removeEventListener
(
type
,
listener
);
};
this
.
notify
=
function
(
type
)
{
console
.
error
(
'
THREE.DragControls: notify() has been deprecated. Use dispatchEvent() instead.
'
);
scope
.
removeEventListener
(
type
);
};
};
THREE
.
DragControls
.
prototype
=
Object
.
create
(
THREE
.
EventDispatcher
.
prototype
);
THREE
.
DragControls
.
prototype
.
constructor
=
THREE
.
DragControls
;
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录