📄 object3d.as
字号:
/**
* Moves the 3d object forwards along it's local z axis
*
* @param distance The length of the movement
*/
public function moveForward(distance:Number):void
{
translate(Number3D.FORWARD, distance);
}
/**
* Moves the 3d object backwards along it's local z axis
*
* @param distance The length of the movement
*/
public function moveBackward(distance:Number):void
{
translate(Number3D.BACKWARD, distance);
}
/**
* Moves the 3d object backwards along it's local x axis
*
* @param distance The length of the movement
*/
public function moveLeft(distance:Number):void
{
translate(Number3D.LEFT, distance);
}
/**
* Moves the 3d object forwards along it's local x axis
*
* @param distance The length of the movement
*/
public function moveRight(distance:Number):void
{
translate(Number3D.RIGHT, distance);
}
/**
* Moves the 3d object forwards along it's local y axis
*
* @param distance The length of the movement
*/
public function moveUp(distance:Number):void
{
translate(Number3D.UP, distance);
}
/**
* Moves the 3d object backwards along it's local y axis
*
* @param distance The length of the movement
*/
public function moveDown(distance:Number):void
{
translate(Number3D.DOWN, distance);
}
/**
* Moves the 3d object directly to a point in space
*
* @param target A vector defining the new position of the 3d object
*/
public function moveTo(target:Number3D):void
{
_transform.tx = target.x;
_transform.ty = target.y;
_transform.tz = target.z;
_localTransformDirty = true;
}
/**
* Moves the 3d object along a vector by a defined length
*
* @param axis The vector defining the axis of movement
* @param distance The length of the movement
*/
public function translate(axis:Number3D, distance:Number):void
{
_vector.rotate(axis, transform);
x += distance * _vector.x;
y += distance * _vector.y;
z += distance * _vector.z;
}
/**
* Rotates the 3d object around it's local x-axis
*
* @param angle The amount of rotation in degrees
*/
public function pitch(angle:Number):void
{
rotate(Number3D.RIGHT, angle);
}
/**
* Rotates the 3d object around it's local y-axis
*
* @param angle The amount of rotation in degrees
*/
public function yaw(angle:Number):void
{
rotate(Number3D.UP, angle);
}
/**
* Rotates the 3d object around it's local z-axis
*
* @param angle The amount of rotation in degrees
*/
public function roll(angle:Number):void
{
rotate(Number3D.FORWARD, angle);
}
/**
* Rotates the 3d object around an axis by a defined angle
*
* @param axis The vector defining the axis of rotation
* @param angle The amount of rotation in degrees
*/
public function rotate(axis:Number3D, angle:Number):void
{
_vector.rotate(axis, transform);
_m.rotationMatrix(_vector.x, _vector.y, _vector.z, angle * toRADIANS);
_m.tx = _transform.tx;
_m.ty = _transform.ty;
_m.tz = _transform.tz;
_transform.multiply3x3(_m, transform);
_rotationDirty = true;
_sceneTransformDirty = true;
_localTransformDirty = true;
}
/**
* Rotates the 3d object around to face a point defined relative to the local coordinates of the parent <code>ObjectContainer3D</code>.
*
* @param target The vector defining the point to be looked at
* @param upAxis An optional vector used to define the desired up orientation of the 3d object after rotation has occurred
*/
public function lookAt(target:Number3D, upAxis:Number3D = null):void
{
_zAxis.sub(target, position);
_zAxis.normalize();
if (_zAxis.modulo > 0.1 && (_zAxis.x != _transform.sxz || _zAxis.y != _transform.syz || _zAxis.z != _transform.szz))
{
_xAxis.cross(_zAxis, upAxis || Number3D.UP);
_xAxis.normalize();
_yAxis.cross(_zAxis, _xAxis);
_yAxis.normalize();
_transform.sxx = _xAxis.x;
_transform.syx = _xAxis.y;
_transform.szx = _xAxis.z;
_transform.sxy = -_yAxis.x;
_transform.syy = -_yAxis.y;
_transform.szy = -_yAxis.z;
_transform.sxz = _zAxis.x;
_transform.syz = _zAxis.y;
_transform.szz = _zAxis.z;
_transformDirty = false;
_rotationDirty = true;
_sceneTransformDirty = true;
_localTransformDirty = true;
// TODO: Implement scale
}
else
{
//throw new Error("lookAt Error");
}
}
/**
* Used to trace the values of a 3d object.
*
* @return A string representation of the 3d object.
*/
public override function toString():String
{
return (name ? name : "$") + ': x:' + Math.round(x) + ' y:' + Math.round(y) + ' z:' + Math.round(z);
}
/**
* Called by the <code>TickTraverser</code>.
*
* Can be overridden to provide updates to the 3d object based on individual render calls from the renderer.
*
* @param time The absolute time at the start of the render cycle
*
* @see away3d.core.traverse.TickTraverser
*/
public function tick(time:int):void
{
}
/**
* Duplicates the 3d object's properties to another <code>Object3D</code> object
*
* @param object [optional] The new object instance into which all properties are copied
* @return The new object instance with duplicated properties applied
*/
public function clone(object:* = null):*
{
var object3D:Object3D = object || new Object3D();
object3D.transform = transform;
object3D.name = name;
object3D.visible = visible;
object3D.mouseEnabled = mouseEnabled;
object3D.useHandCursor = useHandCursor;
object3D.extra = (extra is IClonable) ? (extra as IClonable).clone() : extra;
return object3D;
}
/**
* Default method for adding a transformchanged event listener
*
* @param listener The listener function
*/
public function addOnTransformChange(listener:Function):void
{
addEventListener(Object3DEvent.TRANSFORM_CHANGED, listener, false, 0, true);
}
/**
* Default method for removing a transformchanged event listener
*
* @param listener The listener function
*/
public function removeOnTransformChange(listener:Function):void
{
removeEventListener(Object3DEvent.TRANSFORM_CHANGED, listener, false);
}
/**
* Default method for adding a scenetransformchanged event listener
*
* @param listener The listener function
*/
public function addOnSceneTransformChange(listener:Function):void
{
addEventListener(Object3DEvent.SCENETRANSFORM_CHANGED, listener, false, 0, true);
}
/**
* Default method for removing a scenetransformchanged event listener
*
* @param listener The listener function
*/
public function removeOnSceneTransformChange(listener:Function):void
{
removeEventListener(Object3DEvent.SCENETRANSFORM_CHANGED, listener, false);
}
/**
* Default method for adding a scenechanged event listener
*
* @param listener The listener function
*/
public function addOnSceneChange(listener:Function):void
{
addEventListener(Object3DEvent.SCENE_CHANGED, listener, false, 0, true);
}
/**
* Default method for removing a scenechanged event listener
*
* @param listener The listener function
*/
public function removeOnSceneChange(listener:Function):void
{
removeEventListener(Object3DEvent.SCENE_CHANGED, listener, false);
}
/**
* Default method for adding a radiuschanged event listener
*
* @param listener The listener function
*/
public function addOnRadiusChange(listener:Function):void
{
addEventListener(Object3DEvent.RADIUS_CHANGED, listener, false, 0, true);
}
/**
* Default method for removing a radiuschanged event listener
*
* @param listener The listener function
*/
public function removeOnRadiusChange(listener:Function):void
{
removeEventListener(Object3DEvent.RADIUS_CHANGED, listener, false);
}
/**
* Default method for adding a dimensionschanged event listener
*
* @param listener The listener function
*/
public function addOnDimensionsChange(listener:Function):void
{
addEventListener(Object3DEvent.DIMENSIONS_CHANGED, listener, false, 0, true);
}
/**
* Default method for removing a dimensionschanged event listener
*
* @param listener The listener function
*/
public function removeOnDimensionsChange(listener:Function):void
{
removeEventListener(Object3DEvent.DIMENSIONS_CHANGED, listener, false);
}
/**
* Default method for adding a mouseMove3D event listener
*
* @param listener The listener function
*/
public function addOnMouseMove(listener:Function):void
{
addEventListener(MouseEvent3D.MOUSE_MOVE, listener, false, 0, false);
}
/**
* Default method for removing a mouseMove3D event listener
*
* @param listener The listener function
*/
public function removeOnMouseMove(listener:Function):void
{
removeEventListener(MouseEvent3D.MOUSE_MOVE, listener, false);
}
/**
* Default method for adding a mouseDown3D event listener
*
* @param listener The listener function
*/
public function addOnMouseDown(listener:Function):void
{
addEventListener(MouseEvent3D.MOUSE_DOWN, listener, false, 0, false);
}
/**
* Default method for removing a mouseDown3D event listener
*
* @param listener The listener function
*/
public function removeOnMouseDown(listener:Function):void
{
removeEventListener(MouseEvent3D.MOUSE_DOWN, listener, false);
}
/**
* Default method for adding a mouseUp3D event listener
*
* @param listener The listener function
*/
public function addOnMouseUp(listener:Function):void
{
addEventListener(MouseEvent3D.MOUSE_UP, listener, false, 0, false);
}
/**
* Default method for removing a mouseUp3D event listener
*
* @param listener The listener function
*/
public function removeOnMouseUp(listener:Function):void
{
removeEventListener(MouseEvent3D.MOUSE_UP, listener, false);
}
/**
* Default method for adding a mouseOver3D event listener
*
* @param listener The listener function
*/
public function addOnMouseOver(listener:Function):void
{
addEventListener(MouseEvent3D.MOUSE_OVER, listener, false, 0, false);
}
/**
* Default method for removing a mouseOver3D event listener
*
* @param listener The listener function
*/
public function removeOnMouseOver(listener:Function):void
{
removeEventListener(MouseEvent3D.MOUSE_OVER, listener, false);
}
/**
* Default method for adding a mouseOut3D event listener
*
* @param listener The listener function
*/
public function addOnMouseOut(listener:Function):void
{
addEventListener(MouseEvent3D.MOUSE_OUT, listener, false, 0, false);
}
/**
* Default method for removing a mouseOut3D event listener
*
* @param listener The listener function
*/
public function removeOnMouseOut(listener:Function):void
{
removeEventListener(MouseEvent3D.MOUSE_OUT, listener, false);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -