wheel.as

来自「Papervision3d的源码」· AS 代码 · 共 82 行

AS
82
字号
/**
 * Paperskated3d - simple skateboard simulator in Papervision3d
 * 
 * @author Bartek Drozdz 
 * @version 1.0
 * 
 * Released under Creative Commons Attribution-Non-Commercial-Share Alike 3.0 License.
 */
package com.paperskate3d.skate {
	
	import com.everydayflash.pv3d.modifiers.Bend;
	import flash.display.Bitmap;
	import flash.geom.Point;
	import org.papervision3d.core.proto.MaterialObject3D;
	import org.papervision3d.materials.BitmapMaterial;
	import org.papervision3d.objects.primitives.Plane;
	import org.papervision3d.materials.WireframeMaterial;
	import org.papervision3d.objects.DisplayObject3D;

	public class Wheel extends DisplayObject3D {
		
		[Embed(source = '../../../../assets/wheel.png')]
		private var WheelFront:Class;
		private var frontMaterial:BitmapMaterial;
		
		[Embed(source='../../../../assets/wheel-side.png')]
		private var WheelSide:Class;
		private var sideMaterial:BitmapMaterial;
		
		private var wheelFront:Plane;
		private var wheelBack:Plane;
		private var wheelSide:Plane;
		
		private var rotSpeed:Number;
		private var friction:Number = .97;
		private var speedFactor:Number = 0.6;
		
		public function Wheel() {
			frontMaterial = new BitmapMaterial((new WheelFront() as Bitmap).bitmapData);
			sideMaterial = new BitmapMaterial((new WheelSide() as Bitmap).bitmapData);
			
			
			wheelFront = new Plane(frontMaterial, 30, 30, 1, 1);
			wheelFront.rotationY = 90;
			wheelFront.x = -8;
			addChild(wheelFront);
			
			wheelBack = new Plane(frontMaterial, 30, 30, 1, 1);
			wheelBack.rotationY = -90;
			wheelBack.x = 8;
			addChild(wheelBack);
			
			wheelSide = new Plane(sideMaterial, 16, 15 * Math.PI * 2, 1, 16);
			wheelSide.z = -15;
			var sideBend:Bend = new Bend(wheelSide);
			sideBend.quickBend(-2, .5);
			addChild(wheelSide);
		}
		
		public function move(speed:Number, situation:int):void {
			if (speed == 0) {
				return;
			} else if (situation != 0) {
				rotSpeed = speed * situation * speedFactor;
				rotationX += rotSpeed;
			} else {
				rotSpeed *= friction;
				rotationX += rotSpeed;
			} 
		}
		
		public function set hiquality(v:Boolean):void {
			frontMaterial.smooth = v;
			sideMaterial.smooth = v;
		}
	}
}




⌨️ 快捷键说明

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