| zerAlex2 |
27.07.2012 14:40 |
greenshok ThrowPropsPlugin - как эта штука работает?
Поставил ThrowPropsPlugin, не могу понять суть работы, зачем а примерах лишний код. Вот это работает, но не могу понять, за что какие параметры отвечают:
Код AS3:
import com.greensock.*;
import flash.events.MouseEvent;
import com.greensock.plugins.*;
import com.greensock.easing.*;
import flash.geom.Rectangle;
import flash.utils.getTimer;
import flash.display.*;
TweenPlugin.activate([ThrowPropsPlugin]);
var bounds:Rectangle = new Rectangle(0, 0, stage.stageWidth, stage.stageHeight);
var t1:uint, t2:uint, t3:uint, t4:uint, x1:Number, x2:Number, y1:Number, y2:Number;
mc.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
function mouseDownHandler(event:MouseEvent):void {
TweenLite.killTweensOf(mc);
y1 = y2 = mc.y;
x1 = x2 = mc.x;
t1 = t2 = t3 = t4 = getTimer();
mc.startDrag(false, new Rectangle(bounds.x-99999, bounds.y-99999, 999999, 999999));
mc.stage.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
}
function mouseUpHandler(event:MouseEvent):void {
mc.stopDrag();
mc.stage.removeEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
var gT=getTimer();
var timeY:Number = (gT - t2) / 1000;
var timeX:Number = (gT - t3) / 1000;
trace("gT("+gT+")-t2("+t2+")/1000="+timeY);
var yVelocity:Number = int((mc.y - y2) / timeY);
var xVelocity:Number = int((mc.x - x2) / timeX);
trace("mc.y("+mc.y+")-y2("+y2+")=yVelocity("+yVelocity+")");
var yOverlap:Number = Math.max(0, mc.height - bounds.height);
var xOverlap:Number = Math.max(0, mc.width - bounds.width);
ThrowPropsPlugin.to(mc, {ease:Strong.easeOut, throwProps:{
y:{velocity:yVelocity, max:bounds.top, min:bounds.top - yOverlap, resistance:100},
x:{velocity:xVelocity, max:bounds.left, min:bounds.left - xOverlap, resistance:100}}}, 10, 0.25, 1);
}
Ну и мувик с контентом
Усё ) Он просто вычисляет скорость движения мыши и в заданом пределе перемещает по инерции, далее возврат на место обычным TweenLite-ом
|