/ Published in: ActionScript 3

URL: http://onemanstudio.eu/labs/rabbitTrails
AS3 Trails, just call checkDistance() during Your Tween
Expand |
Embed | Plain Text
package eu.onemanstudio { import flash.display.MovieClip; import flash.display.StageAlign; import flash.events.Event; import com.greensock.*; import com.greensock.easing.*; import eu.onemanstudio.Arrow; /** * ... * @author [email protected] */ public class Main extends MovieClip { private var countX:Number = 0; private var lastX:Number = 0; private var currentX:Number = 0; private var differenceX:Number = 0; private var countY:Number = 0; private var lastY:Number = 0; private var currentY:Number = 0; private var differenceY:Number = 0; private var howMany:int = 20; // Trail every 20 pixels traveled private var eMCe:Arrow; //Trail MovieClip private var mc:Arrow; //Traveler public function Main():void { if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); } private function init(e:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE, init); // entry point stage.align = StageAlign.TOP_LEFT; mc = new Arrow(); addChild(mc); mc.x = 600; mc.y = 30; TweenMax.to(mc, 15, {bezierThrough:[{x:60, y:183}, {x:400, y:440}, {x:320, y:570}, {x:520, y:70}], delay:2, orientToBezier:true, onUpdate:checkDistance}); } private function checkDistance():void { currentX = mc.x; if(lastX && lastX != 0) { differenceX = lastX - currentX; if (differenceX <= 0) differenceX = differenceX * -1; } lastX = currentX; if (differenceX != 0) countX += Number(differenceX); if (countX >= howMany) trail(); currentY = mc.y; if(lastY && lastY != 0) { differenceY = lastY - currentY; if(differenceY <=0) differenceY = differenceY * -1; } lastY = currentY; if (differenceY != 0) countY += Number(differenceY); if (countY >= howMany) trail(); } private function trail():void { eMCe = new Arrow(); addChild(eMCe); eMCe.x = mc.x; eMCe.y = mc.y; eMCe.scaleX = eMCe.scaleY = 0.2; eMCe.rotation = mc.rotation; countY = 0; countX = 0; } } }
You need to login to post a comment.