提交 03759e1e 编写于 作者: M Mr.doob

Object3D now dispatching added/removed events when object is removed from it's...

Object3D now dispatching added/removed events when object is removed from it's parent. CSS3D can nore auto-remove DOM elements. See #3575.
上级 dbcc13bf
...@@ -19,7 +19,6 @@ ...@@ -19,7 +19,6 @@
background: -o-radial-gradient(center, ellipse cover, rgba(43,45,48,1) 0%,rgba(0,0,0,1) 100%); /* Opera 12+ */ background: -o-radial-gradient(center, ellipse cover, rgba(43,45,48,1) 0%,rgba(0,0,0,1) 100%); /* Opera 12+ */
background: -ms-radial-gradient(center, ellipse cover, rgba(43,45,48,1) 0%,rgba(0,0,0,1) 100%); /* IE10+ */ background: -ms-radial-gradient(center, ellipse cover, rgba(43,45,48,1) 0%,rgba(0,0,0,1) 100%); /* IE10+ */
background: radial-gradient(ellipse at center, rgba(43,45,48,1) 0%,rgba(0,0,0,1) 100%); /* W3C */ background: radial-gradient(ellipse at center, rgba(43,45,48,1) 0%,rgba(0,0,0,1) 100%); /* W3C */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#2b2d30', endColorstr='#000000',GradientType=1 ); /* IE6-9 fallback on horizontal gradient */
margin: 0; margin: 0;
font-family: Arial; font-family: Arial;
...@@ -339,21 +338,8 @@ ...@@ -339,21 +338,8 @@
for ( var i = 0; i < objects.length; i ++ ) { for ( var i = 0; i < objects.length; i ++ ) {
var object = objects[ i ]; var object = objects[ i ];
object.parent.remove( object ); object.parent.remove( object );
if ( object.element.parentNode === renderer.cameraElement ) {
renderer.cameraElement.removeChild( object.element );
}
if ( object.userData.joint ) {
object.userData.joint.parent.remove( object.userData.joint );
}
} }
objects = []; objects = [];
......
...@@ -8,12 +8,22 @@ THREE.CSS3DObject = function ( element ) { ...@@ -8,12 +8,22 @@ THREE.CSS3DObject = function ( element ) {
THREE.Object3D.call( this ); THREE.Object3D.call( this );
this.element = element; this.element = element;
this.element.style.position = "absolute"; this.element.style.position = 'absolute';
this.element.style.WebkitTransformStyle = 'preserve-3d'; this.element.style.WebkitTransformStyle = 'preserve-3d';
this.element.style.MozTransformStyle = 'preserve-3d'; this.element.style.MozTransformStyle = 'preserve-3d';
this.element.style.oTransformStyle = 'preserve-3d'; this.element.style.oTransformStyle = 'preserve-3d';
this.element.style.transformStyle = 'preserve-3d'; this.element.style.transformStyle = 'preserve-3d';
this.addEventListener( 'removed', function () {
if ( this.element.parentNode !== null ) {
this.element.parentNode.removeChild( this.element );
}
} );
}; };
THREE.CSS3DObject.prototype = Object.create( THREE.Object3D.prototype ); THREE.CSS3DObject.prototype = Object.create( THREE.Object3D.prototype );
......
...@@ -307,6 +307,8 @@ THREE.Object3D.prototype = { ...@@ -307,6 +307,8 @@ THREE.Object3D.prototype = {
} }
object.parent = this; object.parent = this;
object.dispatchEvent( { type: 'added' } );
this.children.push( object ); this.children.push( object );
// add to scene // add to scene
...@@ -336,6 +338,8 @@ THREE.Object3D.prototype = { ...@@ -336,6 +338,8 @@ THREE.Object3D.prototype = {
if ( index !== - 1 ) { if ( index !== - 1 ) {
object.parent = undefined; object.parent = undefined;
object.dispatchEvent( { type: 'removed' } );
this.children.splice( index, 1 ); this.children.splice( index, 1 );
// remove from scene // remove from scene
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册