📄 spin.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 + -