⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 segment.as

📁 著名的flash 3d引擎 away 3d的源代码
💻 AS
字号:
package away3d.core.base{    import away3d.core.*;    import away3d.core.draw.*;    import away3d.core.utils.*;    import away3d.events.*;    import away3d.materials.*;        import flash.events.Event;    	 /**	 * Dispatched when the material of the segment changes.	 * 	 * @eventType away3d.events.FaceEvent	 */	[Event(name="materialchanged",type="away3d.events.FaceEvent")]	    /**    * A line element used in the wiremesh and mesh object    *     * @see away3d.core.base.WireMesh    * @see away3d.core.base.Mesh    */    public class Segment extends BaseMeshElement    {        use namespace arcane;		/** @private */        arcane var _v0:Vertex;		/** @private */        arcane var _v1:Vertex;		/** @private */        arcane var _material:ISegmentMaterial;		/** @private */        arcane var _ds:DrawSegment = new DrawSegment();		/** @private */        arcane function notifyMaterialChange():void        {            if (!hasEventListener(SegmentEvent.MATERIAL_CHANGED))                return;            if (_materialchanged == null)                _materialchanged = new SegmentEvent(SegmentEvent.MATERIAL_CHANGED, this);                            dispatchEvent(_materialchanged);        }                private var _materialchanged:SegmentEvent;				//TODO: simplify vertex changed events		/*        private function onVertexChange(event:Event):void        {            notifyVertexChange();        }		*/		        private function onVertexValueChange(event:Event):void        {            notifyVertexValueChange();        }		    	/**    	 * An optional untyped object that can contain used-defined properties.    	 */        public var extra:Object;            	/**    	 * Defines the parent 3d object of the segment.    	 */		public var parent:BaseMesh;				/**		 * Returns an array of vertex objects that are used by the segment.		 */        public override function get vertices():Array        {            return [_v0, _v1];        }				/**		 * Defines the v0 vertex of the segment.		 */        public function get v0():Vertex        {            return _v0;        }        public function set v0(value:Vertex):void        {            if (value == _v0)                return;            if (_v0 != null)                if (_v0 != _v1)                    _v0.removeOnChange(onVertexValueChange);            _v0 = value;            if (_v0 != null)                if (_v0 != _v1)                    _v0.addOnChange(onVertexValueChange);            notifyVertexChange();        }				/**		 * Defines the v1 vertex of the segment.		 */        public function get v1():Vertex        {            return _v1;        }        public function set v1(value:Vertex):void        {            if (value == _v1)                return;            if (_v1 != null)                if (_v1 != _v0)                    _v1.removeOnChange(onVertexValueChange);            _v1 = value;            if (_v1 != null)                if (_v1 != _v0)                    _v1.addOnChange(onVertexValueChange);            notifyVertexChange();        }				/**		 * Defines the material of the segment.		 */        public function get material():ISegmentMaterial        {            return _material;        }        public function set material(value:ISegmentMaterial):void        {            if (value == _material)                return;            _material = value;            notifyMaterialChange();        }				/**		 * Returns the squared bounding radius of the face.		 */        public override function get radius2():Number        {            var rv0:Number = _v0._x*_v0._x + _v0._y*_v0._y + _v0._z*_v0._z;            var rv1:Number = _v1._x*_v1._x + _v1._y*_v1._y + _v1._z*_v1._z;            if (rv0 > rv1)                return rv0;            else                return rv1;        }            	/**    	 * Returns the maximum x value of the segment    	 *     	 * @see		away3d.core.base.Vertex#x    	 */        public override function get maxX():Number        {            if (_v0._x > _v1._x)                return _v0._x;            else                return _v1._x;        }            	/**    	 * Returns the minimum x value of the face    	 *     	 * @see		away3d.core.base.Vertex#x    	 */        public override function get minX():Number        {            if (_v0._x < _v1._x)                return _v0._x;            else                return _v1._x;        }            	/**    	 * Returns the maximum y value of the segment    	 *     	 * @see		away3d.core.base.Vertex#y    	 */        public override function get maxY():Number        {            if (_v0._y > _v1._y)                return _v0._y;            else                return _v1._y;        }            	/**    	 * Returns the minimum y value of the face    	 *     	 * @see		away3d.core.base.Vertex#y    	 */        public override function get minY():Number        {            if (_v0._y < _v1._y)                return _v0._y;            else                return _v1._y;        }            	/**    	 * Returns the maximum z value of the segment    	 *     	 * @see		away3d.core.base.Vertex#z    	 */        public override function get maxZ():Number        {            if (_v0._z > _v1._z)                return _v0._z;            else                return _v1._z;        }            	/**    	 * Returns the minimum y value of the face    	 *     	 * @see		away3d.core.base.Vertex#y    	 */        public override function get minZ():Number        {            if (_v0._z < _v1._z)                return _v0._z;            else                return _v1._z;        }    			/**		 * Creates a new <code>Face</code> object.		 *		 * @param	init			[optional]	An initialisation object for specifying default instance properties		 */        public function Segment(v0:Vertex, v1:Vertex, material:ISegmentMaterial = null)        {            this.v0 = v0;            this.v1 = v1;            this.material = material;        }				/**		 * Default method for adding a materialchanged event listener		 * 		 * @param	listener		The listener function		 */        public function addOnMaterialChange(listener:Function):void        {            addEventListener(SegmentEvent.MATERIAL_CHANGED, listener, false, 0, true);        }				/**		 * Default method for removing a materialchanged event listener		 * 		 * @param	listener		The listener function		 */        public function removeOnMaterialChange(listener:Function):void        {            removeEventListener(SegmentEvent.MATERIAL_CHANGED, listener, false);        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -