﻿<?xml version="1.0" encoding="utf-8"?><rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><ttl>60</ttl><title>Scripts for Adobe After Effects 7.0</title><link>http://scriptsforaftereffects.com</link><lastBuildDate>Thu, 11 Mar 2010 06:39:59 GMT</lastBuildDate><pubDate>Thu, 11 Mar 2010 06:39:59 GMT</pubDate><language>en</language><copyright /><itunes:subtitle> </itunes:subtitle><itunes:author /><itunes:summary /><description /><itunes:owner><itunes:name /><itunes:email>name6789@hotmail.com</itunes:email></itunes:owner><itunes:explicit>no</itunes:explicit><itunes:category text="Arts" /><item><title>Generate Animated Mask with Echo Effect</title><link>http://scriptsforaftereffects.com/2009/06/10/generate-animated-mask-with-echo-effect.aspx?ref=rss</link><dc:creator>Kenny Della Valle</dc:creator><description>&lt;P&gt;This will take a mask that you have drawn on a solid and add some effects to it to highlight a particular object.&amp;nbsp;&amp;nbsp;See below for details:&lt;BR&gt;&lt;BR&gt;/************************************************************&lt;BR&gt;To use:&lt;BR&gt;Create a new solid of any color&lt;BR&gt;Select the pen tool and draw a mask with as many points as necessary&lt;BR&gt;Run the script&lt;BR&gt;The script will:&lt;BR&gt;&amp;nbsp;Set the solid&amp;nbsp;layer to white color&lt;BR&gt;&amp;nbsp;Add keyframes&amp;nbsp;for the mask opacity to flash in and then fade out&lt;BR&gt;&amp;nbsp;Add a&amp;nbsp;stroke for the mask&lt;BR&gt;&amp;nbsp;Add an Echo effect&lt;BR&gt;&amp;nbsp;Add keyframes for the mask shape&lt;BR&gt;You must then go to the first mask shape keyframe and scale the mask shape up by double clickingon a point and draging the mouse out while holding CTRL and SHIFT&lt;BR&gt;&lt;BR&gt;You can then:&lt;BR&gt;&amp;nbsp;Change the color of the stroke&lt;BR&gt;&amp;nbsp;Change the timing of the keyframes&lt;BR&gt;&amp;nbsp;Change the color of the solid if necessary&lt;BR&gt;&amp;nbsp;Anything else that strikes your fancy&lt;BR&gt;&amp;nbsp;&lt;BR&gt;***************************************************************/&lt;BR&gt;&lt;BR&gt;var initialLayer = null;&lt;BR&gt;var activeItem = app.project.activeItem;&lt;BR&gt;if (activeItem == null || !(activeItem instanceof CompItem))&lt;BR&gt;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;alert("You need to select a composition before running this script");&lt;BR&gt;&amp;nbsp;} &lt;BR&gt;else &lt;BR&gt;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;var selectedLayers = activeItem.selectedLayers;&lt;BR&gt;&amp;nbsp;if (selectedLayers.length &amp;gt; 0 ) &lt;BR&gt;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DoWork(selectedLayers[0]);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;else&lt;BR&gt;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;alert("You must select a layer with a closed mask.");&lt;BR&gt;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;function DoWork(initialLayer)&lt;BR&gt;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;app.beginUndoGroup("Generate Mask Echo Effect");&lt;BR&gt;&amp;nbsp;&amp;nbsp;if(initialLayer.property("mask").numProperties &amp;gt; 0)&lt;BR&gt;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;var initialMask = initialLayer.mask(1);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;initialLayer.source.mainSource.color = [1,1,1];&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;var point1, point2, point3, point4;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;var vertsArray = initialMask.maskShape.value.vertices;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;var maskShape = initialMask("Mask Shape");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;var initialShapeKey = maskShape.addKey(initialLayer.inPoint);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;var secondShapeKey = maskShape.addKey(initialLayer.inPoint+6/12);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;var maskOpacity = initialMask("Mask Opacity");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;var initialOpacKey = maskOpacity.addKey(initialLayer.inPoint+5/12);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;var secondOpacKey = maskOpacity.addKey(initialLayer.inPoint+6/12);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;var thirdOpacKey = maskOpacity.addKey(initialLayer.inPoint+11/12);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;maskOpacity.setValueAtKey(1, 0);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;maskOpacity.setValueAtKey(2, 80);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;maskOpacity.setValueAtKey(3, 0);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;var opacityProp = initialLayer("Opacity");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;var initialOpacKeyframe = opacityProp.addKey(initialLayer.inPoint+12/12);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;var secondOpacKeyframe = opacityProp.addKey(initialLayer.inPoint+18/12);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;opacityProp.setValueAtKey(1,100);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;opacityProp.setValueAtKey(2,0);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;initialLayer.outPoint = initialLayer.inPoint+24/12;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;var stroke = initialLayer("Effects").addProperty("Stroke");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;stroke.allMasks.setValue(1);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;var echo = initialLayer("Effects").addProperty("Echo");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo(1).setValue(-.04);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo(2).setValue(4);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo(3).setValue(1);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo(4).setValue(.55);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;return;&lt;BR&gt;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;app.endUndoGroup();&lt;BR&gt;&amp;nbsp;}&lt;BR&gt;&lt;BR&gt;*/&lt;/P&gt;Generate Mask with Echo effect&lt;BR&gt;&lt;a href="http://media.podcastingmanager.com/0/0/1/7/1/125471-117100/vlog/Kenny_Della_Valle_2009610151932.flv?ref=rss"&gt;http://scriptsforaftereffects.com/2009/06/10/generate-animated-mask-with-echo-effect.aspx&lt;/a&gt;</description><comments>http://scriptsforaftereffects.com/2009/06/10/generate-animated-mask-with-echo-effect.aspx#Comments</comments><guid isPermaLink="false">d76bcd60-47b0-4863-8748-b73bea466265</guid><pubDate>Wed, 10 Jun 2009 22:06:00 GMT</pubDate></item><item><title>Generate Animated Pointer/Label</title><link>http://scriptsforaftereffects.com/2008/05/09/generate-animated-pointerlabel.aspx?ref=rss</link><dc:creator>Kenny Della Valle</dc:creator><description>&lt;P&gt;This will take a 3-point mask drawn on a layer, add some effects to it, and animate it so the result is a label that animates in.&amp;nbsp; See below for details:&lt;BR&gt;&lt;BR&gt;/************************************************************&lt;BR&gt;To use:&lt;BR&gt;Create a new solid of any color&lt;BR&gt;Select the pen tool and draw three points on the solid:&lt;BR&gt;&amp;nbsp;The first 2 points should be horizontal&lt;BR&gt;&amp;nbsp;The 3rd point should be the ending point (what you want to point to)&lt;BR&gt;Run the script&lt;BR&gt;The script will:&lt;BR&gt;&amp;nbsp;Add a second mask which is the dot for the pointer&lt;BR&gt;&amp;nbsp;Add a yellow stroke and a drop shadow to the layer&lt;BR&gt;&amp;nbsp;Animate the masks starting at the first point and ending at the 3rd point&lt;BR&gt;&amp;nbsp;Add easing to the keyframes&lt;BR&gt;&amp;nbsp;Set the opacity on the layer to 100&lt;BR&gt;&amp;nbsp;Change the name of the layer and the solid to "Animated Pointer Layer"&lt;BR&gt;&amp;nbsp;&lt;BR&gt;You can then:&lt;BR&gt;&amp;nbsp;Change the color of the stroke&lt;BR&gt;&amp;nbsp;Change the timing of the keyframes&lt;BR&gt;&amp;nbsp;Anything else that strikes your fancy&lt;BR&gt;&amp;nbsp;&lt;BR&gt;***************************************************************/&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;var initialLayer = null;&lt;BR&gt;var activeItem = app.project.activeItem;&lt;BR&gt;if (activeItem == null || !(activeItem instanceof CompItem))&lt;BR&gt;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;alert("You need to select a composition before running this script");&lt;BR&gt;&amp;nbsp;} &lt;BR&gt;else &lt;BR&gt;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;var selectedLayers = activeItem.selectedLayers;&lt;BR&gt;&amp;nbsp;app.beginUndoGroup("Generate animated pointer");&lt;BR&gt;&amp;nbsp;if (selectedLayers.length &amp;gt; 0 ) &lt;BR&gt;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DoWork(selectedLayers[0]);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;else&lt;BR&gt;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;alert("You must select a layer to add the mask to.");&lt;BR&gt;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;app.endUndoGroup();&lt;BR&gt;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;function DoWork(initialLayer)&lt;BR&gt;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;if(initialLayer.property("mask").numProperties &amp;gt; 0)&lt;BR&gt;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;var initialMask = initialLayer.mask(1);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;var point1, point2, point3;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;var vertsArray = initialMask.maskShape.value.vertices;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(vertsArray.length == 3)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;point1 = vertsArray[0];&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;point2 = vertsArray[1];&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;point3 = vertsArray[2];&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var np1,np2,np3,np4;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var x = point3[0];&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var y= point3[1];&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var radius = 3;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;np1 = new Array([x], [y+radius]);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;np2 = new Array([x-radius], [y]);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;np3 = new Array([x], [y-radius]);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;np4 = new Array([x+radius], [y]);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;newMask = initialLayer.Masks.addProperty("Mask");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;myMaskShape = newMask.property("maskShape");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;myShape = myMaskShape.value;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;myShape.vertices = [np1,np2,np3,np4];&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var startTime = initialLayer.inPoint;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;myMaskShape.setValueAtTime(startTime+1, myShape);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var firstMask = initialLayer.mask(1);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;initialMaskShape = firstMask.maskShape;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;iShape = initialMaskShape.value;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;iShape.vertices = [point1,point2,point3];&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;initialMaskShape.setValueAtTime(startTime+1,iShape);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var xDiff = point3[0]-point2[0];&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var yDiff = point3[1]-point2[1];&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var tp1 = new Array([np1[0]-xDiff],[np1[1]-yDiff]);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var tp2 = new Array([np2[0]-xDiff],[np2[1]-yDiff]);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var tp3 = new Array([np3[0]-xDiff],[np3[1]-yDiff]);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var tp4 = new Array([np4[0]-xDiff],[np4[1]-yDiff]);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var shapeTween = new Shape();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;shapeTween.vertices = [tp1,tp2,tp3,tp4];&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;myMaskShape.setValueAtTime(startTime+.5, shapeTween);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;iShape.vertices = [point1,point2,point2];&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;initialMaskShape.setValueAtTime(startTime+.5,iShape);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xDiff = point2[0]-point1[0];&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;yDiff = point2[1]-point1[1];&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tp1 = new Array([tp1[0]-xDiff],[tp1[1]-yDiff]);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tp2 = new Array([tp2[0]-xDiff],[tp2[1]-yDiff]);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tp3 = new Array([tp3[0]-xDiff],[tp3[1]-yDiff]);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tp4 = new Array([tp4[0]-xDiff],[tp4[1]-yDiff]);&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;shapeTween = new Shape();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;shapeTween.vertices = [tp1,tp2,tp3,tp4];&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;myMaskShape.setValueAtTime(startTime,shapeTween);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;iShape.vertices = [point1,point1,point1];&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;initialMaskShape.setValueAtTime(startTime,iShape);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var ease = new KeyframeEase(0, 50);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; initialMaskShape.setTemporalEaseAtKey(1, [ease], [ease]);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;initialMaskShape.setTemporalEaseAtKey(2, [ease], [ease]);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;initialMaskShape.setTemporalEaseAtKey(3, [ease], [ease]);&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; myMaskShape.setTemporalEaseAtKey(1, [ease], [ease]);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;myMaskShape.setTemporalEaseAtKey(2, [ease], [ease]);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;myMaskShape.setTemporalEaseAtKey(3, [ease], [ease]);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(initialLayer("Effects").canAddProperty("Stroke"))&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var stroke = initialLayer("Effects").addProperty("Stroke");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;stroke.allMasks.setValue(1);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;stroke.color.setValue([1,1,0]);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(initialLayer("Effects").canAddProperty("Drop Shadow"))&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var ds = initialLayer("Effects").addProperty("Drop Shadow");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ds.distance = 4;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ds.softness = 3;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;initialLayer.property("Opacity").setValue(100);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;initialLayer.source.mainSource.color = [1,1,0];&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;initialLayer.name = "Animated Pointer Layer";&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;initialLayer.source.name = "Animated Pointer Layer";&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;else&lt;BR&gt;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;alert("No mask on selected layer.");&lt;BR&gt;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;}&lt;/P&gt;&lt;BR&gt;&lt;a href="http://media.podcastingmanager.com/0/0/1/7/1/125471-117100/vlog/Kenny_Della_Valle_20085912610.flv?ref=rss"&gt;http://scriptsforaftereffects.com/2008/05/09/generate-animated-pointerlabel.aspx&lt;/a&gt;</description><comments>http://scriptsforaftereffects.com/2008/05/09/generate-animated-pointerlabel.aspx#Comments</comments><guid isPermaLink="false">6033ec86-a37e-4654-b448-d270c611a128</guid><pubDate>Fri, 09 May 2008 19:04:00 GMT</pubDate></item><item><title>Scale Layer in With Bounce</title><link>http://scriptsforaftereffects.com/2008/05/09/scale-layer-in-with-bounce.aspx?ref=rss</link><dc:creator>Kenny Della Valle</dc:creator><description>&lt;P&gt;The following script is nothing fancy, but helps increase workflow by putting several common tasks together.&amp;nbsp; This will animate a layer from a scale of 0,0 to its current size, with a nice bounce effect.&amp;nbsp; See details below:&lt;BR&gt;&lt;BR&gt;/************************************************************&lt;BR&gt;To use:&lt;BR&gt;Run script for any layer&lt;/P&gt;
&lt;P&gt;The script will:&lt;BR&gt;&amp;nbsp;Set a 0,0 scale keyframe at the inpoint of the layer&lt;BR&gt;&amp;nbsp;Animate the scale to the current size with a little bounce at the end&lt;BR&gt;&amp;nbsp;Turn motion blur on for the layer&lt;BR&gt;&amp;nbsp;Turn motion blur on for the composition (if it isn't already on)&lt;BR&gt;&amp;nbsp;If the layer has a mask on it, it will re-center the layer's anchor point so that it scales-in evenly&lt;BR&gt;&amp;nbsp;&lt;BR&gt;You can then:&lt;BR&gt;&amp;nbsp;Change the timing of the keyframes&lt;BR&gt;&amp;nbsp;Change the amount of "bump" by tweaking the scale values&lt;BR&gt;&amp;nbsp;Move the anchor point as needed&lt;BR&gt;&amp;nbsp;Anything else you may need&lt;BR&gt;&amp;nbsp;&lt;BR&gt;***************************************************************/&lt;/P&gt;
&lt;P&gt;function fadeLayer(myLayer)&lt;BR&gt;{&lt;/P&gt;
&lt;P&gt;&amp;nbsp;//If there is a mask, reset the anchor point&lt;BR&gt;&amp;nbsp;if(myLayer.property("mask").numProperties &amp;gt; 0)&lt;BR&gt;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;var initialMask = myLayer.mask(1);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;var point1, point2, point3, point4;&lt;BR&gt;&amp;nbsp;&amp;nbsp;var vertsArray = initialMask.maskShape.value.vertices;&lt;BR&gt;&amp;nbsp;&amp;nbsp;if(vertsArray.length == 4)&lt;BR&gt;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;point1 = vertsArray[0];&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;point2 = vertsArray[1];&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;point3 = vertsArray[2];&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;point4 = vertsArray[3];&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;var maskWidth&amp;nbsp;&amp;nbsp; = Math.abs(vertsArray[0][0] - vertsArray[1][0]);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;var maskHeight&amp;nbsp; = Math.abs(vertsArray[1][1] - vertsArray[2][1]);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ap1 = point2[0]+maskWidth/2;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ap2 = point2[1]+maskHeight/2;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;pArray = new Array(ap1, ap2);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;var diffPoint = pArray - myLayer.property("Anchor Point").value;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;myLayer.property("Anchor Point").setValue(pArray);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;myLayer.property("Position").setValue(myLayer.property("Position").value+diffPoint);&lt;BR&gt;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;myProp = myLayer.property("Scale");&lt;BR&gt;&amp;nbsp;inPoint = myLayer.inPoint;&lt;BR&gt;&amp;nbsp;outPoint = inPoint + (8/12);&lt;BR&gt;&amp;nbsp;bouncePoint = inPoint + (6/12);&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;outKey = myProp.addKey(outPoint);&lt;BR&gt;&amp;nbsp;myProp.setValueAtKey(outKey, myProp.value);&amp;nbsp;&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;bounceKey = myProp.addKey(bouncePoint);&lt;BR&gt;&amp;nbsp;myProp.setValueAtKey(bounceKey, myProp.value*1.05);&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;inKey = myProp.addKey(inPoint);&lt;BR&gt;&amp;nbsp;myProp.setValueAtKey(inKey, [0,0]);&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;var ease = new KeyframeEase(0, 33);&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;myProp.setInterpolationTypeAtKey(1,5013);&lt;BR&gt;&amp;nbsp;myProp.setInterpolationTypeAtKey(2,5013);&lt;BR&gt;&amp;nbsp;myProp.setInterpolationTypeAtKey(3,5013);&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;myLayer.motionBlur = true;&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;// make sure a comp is selected&lt;BR&gt;var activeItem = app.project.activeItem;&lt;BR&gt;if (activeItem == null || !(activeItem instanceof CompItem))&lt;BR&gt;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;alert("You need to select a layer before running this script");&lt;BR&gt;&amp;nbsp;} &lt;BR&gt;else &lt;BR&gt;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;// make sure at least one layer is selected&lt;BR&gt;&amp;nbsp;var selectedLayers = activeItem.selectedLayers;&lt;BR&gt;&amp;nbsp;if (selectedLayers.length == 0 ) &lt;BR&gt;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;alert("Select at least one layer before running this script.");&lt;BR&gt;&amp;nbsp;&amp;nbsp;} &lt;BR&gt;&amp;nbsp;else &lt;BR&gt;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;app.beginUndoGroup("Scale Layer 0 to current with bounce");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;selectedLayers[0].containingComp.motionBlur = true;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;for(i=0; i&amp;lt;selectedLayers.length; i++)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fadeLayer(selectedLayers[i]);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;app.endUndoGroup();&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;}&lt;/P&gt;&lt;BR&gt;&lt;a href="http://media.podcastingmanager.com/0/0/1/7/1/125471-117100/vlog/Kenny_Della_Valle_20085912318.flv?ref=rss"&gt;http://scriptsforaftereffects.com/2008/05/09/scale-layer-in-with-bounce.aspx&lt;/a&gt;</description><comments>http://scriptsforaftereffects.com/2008/05/09/scale-layer-in-with-bounce.aspx#Comments</comments><guid isPermaLink="false">c18cd5ab-f641-4e4b-a46d-22c9cc23b4ee</guid><pubDate>Fri, 09 May 2008 19:00:00 GMT</pubDate></item><item><title>Create stroked circle highlight with stub for text.</title><link>http://scriptsforaftereffects.com/2008/04/03/create-stroked-circle-highlight-with-stub-for-text.aspx?ref=rss</link><dc:creator>Kenny Della Valle</dc:creator><description>&lt;P&gt;&lt;BR&gt;This script takes a layer with a round mask on it, and adds a stroke (set to paint on transparent) and a drop shadow.&amp;nbsp; It sets the pivot point to the center of the mask.&amp;nbsp; It adds keyframes to animate the stroke so the circle animates in and then extends with a little stub on the right.&amp;nbsp; The drop shadow's direction is set to an expression so you can rotate the stub to any direction and the shadow is still looking good.&amp;nbsp; It's harder than I thought to describe it, so check out the attached video for a quick sample.&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;//Make mask into circling pointer thing&lt;BR&gt;var initialLayer = null;&lt;BR&gt;var activeItem = app.project.activeItem;&lt;BR&gt;if (activeItem == null || !(activeItem instanceof CompItem))&lt;BR&gt;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;alert("You need to select a composition before running this script");&lt;BR&gt;&amp;nbsp;} &lt;BR&gt;else &lt;BR&gt;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;var selectedLayers = activeItem.selectedLayers;&lt;BR&gt;&amp;nbsp;if (selectedLayers.length &amp;gt; 0 ) &lt;BR&gt;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;DoWork(selectedLayers[0]);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;else&lt;BR&gt;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;alert("You must select a layer to add the mask to.");&lt;BR&gt;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;function DoWork(initialLayer)&lt;BR&gt;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;app.beginUndoGroup("Generate encirlcing mask");&lt;BR&gt;&amp;nbsp;&amp;nbsp;if(initialLayer.property("mask").numProperties &amp;gt; 0)&lt;BR&gt;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;var initialMask = initialLayer.mask(1);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;var point1, point2, point3, point4;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;var vertsArray = initialMask.maskShape.value.vertices;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(vertsArray.length == 4)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;point1 = vertsArray[0];&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;point2 = vertsArray[1];&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;point3 = vertsArray[2];&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;point4 = vertsArray[3];&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pArray = new Array(point1[0], point2[1]);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var circumference = (22/7)*(point1[1]-point3[1]);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var stubLength = 30;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var circleEndPercent = (stubLength/circumference*100)+100;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;initialLayer.property("Anchor Point").setValue(pArray);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;initialLayer.property("Position").setValue(pArray);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;initialLayer.property("Rotation").setValue(90);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var newPoint1 = [point1[0], point1[1]-stubLength];&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;newMask = initialLayer.Masks.addProperty("Mask");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;newMask.inverted = false;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;myMaskShape = newMask.property("maskShape");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;myShape = myMaskShape.value;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;myShape.vertices = [point1,newPoint1];&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;myShape.closed = false;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;myMaskShape.setValue(myShape);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(initialLayer("Effects").canAddProperty("Stroke"))&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var stroke = initialLayer("Effects").addProperty("Stroke");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;stroke.allMasks.setValue(1);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var endProp = stroke.end;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var startTime = initialLayer.inPoint;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;endProp.setValueAtTime(startTime,0);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;endProp.setValueAtTime(startTime+.5, circleEndPercent);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;endProp.setValueAtTime(startTime+1, 100);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;endProp.setInterpolationTypeAtKey(1,5013);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;endProp.setInterpolationTypeAtKey(2,5013);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;endProp.setInterpolationTypeAtKey(3,5013);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var ease = new KeyframeEase(0, 33);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;endProp.setTemporalEaseAtKey(1, [ease], [ease]);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;endProp.setTemporalEaseAtKey(2, [ease], [ease]);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;endProp.setTemporalEaseAtKey(3, [ease], [ease]);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;stroke.paintStyle.setValue(2);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(initialLayer("Effects").canAddProperty("Drop Shadow"))&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var ds = initialLayer("Effects").addProperty("Drop Shadow");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ds.distance = 5;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ds.softness = 3;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ds.direction.expression = '(transform.rotation*-1)+135';&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;initialLayer.property("Opacity").setValue(100);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;initialLayer.motionBlur = true;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;else&lt;BR&gt;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;alert("No mask on selected layer.");&lt;BR&gt;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;app.endUndoGroup();&lt;/P&gt;
&lt;P&gt;&amp;nbsp;}&lt;BR&gt;&lt;/P&gt;Encircling Mask&lt;BR&gt;&lt;a href="http://media.podcastingmanager.com/0/0/1/7/1/125471-117100/vlog/Kenny_Della_Valle_20084391538.flv?ref=rss"&gt;http://scriptsforaftereffects.com/2008/04/03/create-stroked-circle-highlight-with-stub-for-text.aspx&lt;/a&gt;</description><comments>http://scriptsforaftereffects.com/2008/04/03/create-stroked-circle-highlight-with-stub-for-text.aspx#Comments</comments><guid isPermaLink="false">292feebc-e3d1-4186-afe9-3c1889f6e01d</guid><pubDate>Thu, 03 Apr 2008 16:07:00 GMT</pubDate></item><item><title>Create Text Selector that Incrementally Selects Each Line of Text</title><link>http://scriptsforaftereffects.com/2008/04/01/create-text-selector-that-incrementally-selects-each-line-of-text.aspx?ref=rss</link><dc:creator>Kenny Della Valle</dc:creator><description>&lt;P&gt;This script will take a text layer with multiple lines, and create a new range selector.&amp;nbsp; It will create keyframes that incrementally select each line of text.&amp;nbsp; We use this a lot for animating lists and things.&amp;nbsp; You can than easily apply properties to the selector.&lt;BR&gt;&lt;BR&gt;/*********************************************/&lt;BR&gt;&lt;BR&gt;// make sure a comp is selected&lt;BR&gt;var activeItem = app.project.activeItem;&lt;BR&gt;if (activeItem == null || !(activeItem instanceof CompItem))&lt;BR&gt;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;alert("You need to select a layer before running this script");&lt;BR&gt;&amp;nbsp;} &lt;BR&gt;else &lt;BR&gt;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;// make sure at least one layer is selected&lt;BR&gt;&amp;nbsp;var selectedLayers = activeItem.selectedLayers;&lt;BR&gt;&amp;nbsp;if (selectedLayers.length != 1 ) &lt;BR&gt;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;alert("Select one layer before running this script.");&lt;BR&gt;&amp;nbsp;&amp;nbsp;} &lt;BR&gt;&amp;nbsp;else &lt;BR&gt;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;app.beginUndoGroup("Create Text Selector");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;for(i=0; i&amp;lt;selectedLayers.length; i++)&lt;BR&gt;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;//If Text layer&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;var theTextLayer = selectedLayers[i];&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;CreateTextSelector(theTextLayer);&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;app.endUndoGroup();&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&lt;BR&gt;function CreateTextSelector(theTextLayer)&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;var lineCount = 1;&lt;BR&gt;&amp;nbsp;var layerText = String(theTextLayer.text.sourceText.value);&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;for(i=0; i&amp;lt;=layerText.length; i++)&lt;BR&gt;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;if(layerText.charCodeAt(i) == 13)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;lineCount++;&lt;BR&gt;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;var theTextProperties = theTextLayer.property("ADBE Text Properties");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;var theAnimators = theTextProperties.property("ADBE Text Animators");&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;// add a Text Animator property to control the highlight style&lt;BR&gt;&amp;nbsp;&amp;nbsp;var highlightAnimator = theAnimators.addProperty("ADBE Text Animator");&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;var highlightSelectors = highlightAnimator.property("ADBE Text Selectors");&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;// add a Range Selector property to control the highlight timing&lt;BR&gt;&amp;nbsp;&amp;nbsp;var highlightSelector = highlightSelectors.addProperty("ADBE Text Selector");&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;// define the range selector's Advanced (7) property group&lt;BR&gt;&amp;nbsp;&amp;nbsp;var advancedSelector = highlightSelector.property("ADBE Text Range Advanced");&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;// define the Advanced property group's Unit (1) property and set to Index (percentage = 1, index = 2)&lt;BR&gt;&amp;nbsp;&amp;nbsp;var unitsProperty = advancedSelector.property("ADBE Text Range Units");&lt;BR&gt;&amp;nbsp;&amp;nbsp;unitsProperty.setValue(2);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;// base sur ligne&lt;BR&gt;&amp;nbsp;&amp;nbsp;var basedOnProperty = advancedSelector.property("ADBE Text Range Type2");&lt;BR&gt;&amp;nbsp;&amp;nbsp;basedOnProperty.setValue(4); &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;// define the range selector's Start (4) and End (5) properties and set both to zero&lt;BR&gt;&amp;nbsp;&amp;nbsp;var rangeStartProp = highlightSelector.property("ADBE Text Index Start");&lt;BR&gt;&amp;nbsp;&amp;nbsp;var rangeEndProp = highlightSelector.property("ADBE Text Index End");&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;var animLength = .5;&lt;BR&gt;&amp;nbsp;&amp;nbsp;var animSpacing = 2;&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;for(j=0; j&amp;lt;lineCount; j++)&lt;BR&gt;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;var inPoint = theTextLayer.inPoint + (animSpacing * j);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;var outPoint = theTextLayer.inPoint + animLength+(animSpacing * j);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;startKey = rangeStartProp.addKey(inPoint);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;rangeStartProp.setValueAtKey(startKey, (j&amp;lt;1)?(0)&lt;img src="http://scriptsforaftereffects.com/emoticons/sad.png" border="0" /&gt;j-1));&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;startKey2 = rangeStartProp.addKey(inPoint+animLength);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;rangeStartProp.setValueAtKey(startKey2, j);&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;endKey = rangeEndProp.addKey(inPoint);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;rangeEndProp.setValueAtKey(endKey, j);&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;endKey2 = rangeEndProp.addKey(inPoint+animLength);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;rangeEndProp.setValueAtKey(endKey2, j+1);&lt;BR&gt;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;}&lt;BR&gt;&amp;nbsp;&lt;BR&gt;function SetKey(myLayer)&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;opacProp = myLayer.property("Opacity");&lt;BR&gt;&amp;nbsp;inPoint = myLayer.time;&lt;BR&gt;&amp;nbsp;outPoint = inPoint + .5;&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;var startVal = 100;&lt;BR&gt;&amp;nbsp;if(opacProp.numKeys &amp;gt; 0)&lt;BR&gt;&amp;nbsp;&amp;nbsp;startVal = opacProp.value;&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;inKey = opacProp.addKey(inPoint);&lt;BR&gt;&amp;nbsp;opacProp.setValueAtKey(inKey, startVal);&lt;BR&gt;&amp;nbsp;outKey = opacProp.addKey(outPoint);&lt;BR&gt;&amp;nbsp;opacProp.setValueAtKey(outKey, 0);&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;</description><comments>http://scriptsforaftereffects.com/2008/04/01/create-text-selector-that-incrementally-selects-each-line-of-text.aspx#Comments</comments><guid isPermaLink="false">7894b1b8-c977-4ba3-a82f-d1838ab7278f</guid><pubDate>Tue, 01 Apr 2008 19:37:00 GMT</pubDate></item><item><title>Add a New Null as a Parent to the Selected Layers</title><link>http://scriptsforaftereffects.com/2008/04/01/add-a-new-null-as-a-parent-to-the-selected-layers.aspx?ref=rss</link><dc:creator>Kenny Della Valle</dc:creator><description>&lt;P&gt;Simple script that add's a new null and sets any selected layers to use the new null as parent:&lt;BR&gt;&lt;BR&gt;/***************************************/&lt;BR&gt;&lt;BR&gt;var initialLayer = null;&lt;BR&gt;var activeItem = app.project.activeItem;&lt;BR&gt;if (activeItem == null || !(activeItem instanceof CompItem))&lt;BR&gt;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;alert("You need to select a composition before running this script");&lt;BR&gt;&amp;nbsp;} &lt;BR&gt;else &lt;BR&gt;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;app.beginUndoGroup("Add Null");&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;var selectedLayers = activeItem.selectedLayers;&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;//Add null&lt;BR&gt;&amp;nbsp;myNull = activeItem.layers.addNull(activeItem.duration);&lt;BR&gt;&amp;nbsp;var startTime = 9999;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;//Set selected layers parent to the new null&lt;BR&gt;&amp;nbsp;for(var i=0; i&amp;lt;selectedLayers.length; i++)&lt;BR&gt;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;selectedLayers[i].parent = myNull;&lt;BR&gt;&amp;nbsp;&amp;nbsp;if(selectedLayers[i].startTime &amp;lt; startTime)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;startTime = selectedLayers[i].startTime;&lt;BR&gt;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;if(startTime == 9999)&lt;BR&gt;&amp;nbsp;&amp;nbsp;startTime = 0;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;myNull.startTime = startTime;&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;app.endUndoGroup();&lt;BR&gt;&amp;nbsp;}&lt;/P&gt;</description><comments>http://scriptsforaftereffects.com/2008/04/01/add-a-new-null-as-a-parent-to-the-selected-layers.aspx#Comments</comments><guid isPermaLink="false">4db9879e-19db-4513-aaf7-3270474aae7f</guid><pubDate>Tue, 01 Apr 2008 19:34:00 GMT</pubDate></item><item><title>Still working on this whole blog thing..</title><link>http://scriptsforaftereffects.com/2009/04/01/still-working-on-this-whole-blog-thing.aspx?ref=rss</link><dc:creator>Kenny Della Valle</dc:creator><description>I'm just pasting in the scripts for now until i figure out the best way to setup the hosted files and everything.</description><comments>http://scriptsforaftereffects.com/2009/04/01/still-working-on-this-whole-blog-thing.aspx#Comments</comments><guid isPermaLink="false">f10db4ef-6467-4293-9710-4a9573283626</guid><pubDate>Mon, 31 Mar 2008 19:10:00 GMT</pubDate></item><item><title>Site Launch</title><link>http://scriptsforaftereffects.com/2008/03/29/site-lanuch.aspx?ref=rss</link><dc:creator>Kenny Della Valle</dc:creator><description>Site launched.&amp;nbsp; Soon will post scripts.</description><comments>http://scriptsforaftereffects.com/2008/03/29/site-lanuch.aspx#Comments</comments><guid isPermaLink="false">06d132ec-5264-4a2e-93ef-3516377012ad</guid><pubDate>Sat, 29 Mar 2008 17:16:00 GMT</pubDate></item></channel></rss>