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

📄 spin.as

📁 Papervision3d的源码
💻 AS
字号:
/**
 * 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.tricks {
	
	import com.paperskate3d.skate.SkateBoard;
	import caurina.transitions.Tweener;
	import flash.events.TimerEvent;
	import flash.utils.Timer;
	
	import com.carlcalderon.arthropod.Debug;

	public class Spin extends BasicTrick {
		
		private var amount:Number;
		private var backside:Boolean;
		
		private var shoveIt:Boolean;
		private var bumpForce:Number;
		
		public var ramplitude:Number = 0;
		public var destination:Number;
		
		public function Spin(amount:Number, backside:Boolean = false, shoveIt:Boolean = false) {
			this.amount = amount;
			this.backside = backside;
			this.shoveIt = shoveIt;
			this.bumpForce = (amount == 360) ? 150 : 100;
		}
		
		override public function get name():String { return "spin" };
		
		override protected function prepareTrick():void {
			if (backside) destination = spinAmount - amount;
			else destination = spinAmount + amount;
			
			var trickTime:Number = (shoveIt) ? TRICK_TIME * .6 : TRICK_TIME * .8;
			var delayTime:Number = (shoveIt) ? 0 : TRICK_TIME * .2;
			
			if (olliePhase == Ollie.LEVEL) {
				trickTime *= 0.6;
				delayTime = 0;
			}
			
			Tweener.addTween(this, { 
				spinAmount:destination, 
				shoveItBump:Math.PI,
				bend:Math.PI,
				delay:delayTime,
				time:trickTime, 
				transition:"easeInOutSine", 
				onComplete:end 
			} );
			
			var tiltAngle:Number = (backside) ? Math.PI / 2 : Math.PI / -2;
			skateboard.deck.lockTiltDeck(10, tiltAngle);
			
			var t:Timer = new Timer(400 / playbackSpeed, 1);
			t.addEventListener(TimerEvent.TIMER_COMPLETE, releaseTiltLock);
			t.start();
		}
		
		private function releaseTiltLock(te:TimerEvent):void {
			skateboard.deck.releaseTiltDeck();
		}
		
		public function get spinAmount():Number {
			return skateboard.internalRotationZ;
		}
		
		public function set spinAmount(a:Number):void {
			skateboard.internalRotationZ = a;
		}
		
		public function get bend():Number {
			return skateboard.internalRotationY;
		}
		
		public function set bend(a:Number):void {
			if (shoveIt && !fromWheelie) {
				if(backside) skateboard.internalRotationY = Math.sin(a) * 35;
				else skateboard.internalRotationY = Math.sin(a) * -35;
			}
		}
		
		public function get shoveItBump():Number {
			return skateboard.y;
		}
		
		public function set shoveItBump(a:Number):void {
			if (shoveIt && !fromWheelie) skateboard.y = Math.sin(a) * bumpForce;
		}
		
		override protected function finalizeTrick():void {
			if (amount == 180) manager.switchOrientation();
			skateboard.internalRotationZ = destination;
		}
	}
}

⌨️ 快捷键说明

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