After Effects Javascript API

=Javascript for After Effects=

These are standard and common functions used by After Effects. Although many can be used in an Expressions field, all of these are accessable by running a script manually.

Types of scripts
There are two basic types of scripts which AE uses, uncompiled and compiled.

Uncompiled Javascript
An uncompiled Javascriptis the most common script you'll see. These are the scripts have filenames ending in .jsx and can be opened with any text editor and edited, and you can see the javascript code when opened. These scripts are meant to be flexible and available for anyone to edit.

Compiled Javascript
Compiled scripts work exactly like an uncompiled script only the file is encoded for protection. These types of scripts are meant for commercial distribution and cannot be edited by anyone but the author.

Variables
What are they?

You can think of a variable as a box that can store different types things based on the boxes shape. For example, a number box (variable) can store numbers. A string box can store a string of numbers and sletters surrounded by quotes "". Normally we create a box before refering to it. You wouldn't normally tell someone to give you a plooper unless you told that person what a plooper is. ex. "A plooper is the number 5.  can you tell me what a plooper is?". then answer would be, "The number 5"  Establishing the existance of your variable in this manner is called declaration. You must declare your variable before using it.

Declaring variables

Variables can be declared with a "var" in front of them. ex "var myNumber". you can also assign a value to your variable at the same time. "var myNumber = 5"  Until a variable is assign a value (5) it is considered "undefined." Variable should be uniquely named. If you accidently try to declare a variable that already exists, it will be treated as a an assignment and assign any new value in the declaration statement to the variable. If the duplicate declaration has no assignment, then nothing happens. If you try to assign a value to a non-existent variable, JavaScript will create the variable for you.

Conventions
 * When naming your variable, you must use letters, $, and _   ex.  "myPlooper" or "my_Plooper" or "$myPlooper"
 * never use spaces
 * Javascript is case-sensitive, meaning.  "Plooper" is different from "plooper"
 * Try to use camelCase

Lifespan

The life of a variable is based upon the region in which is was declared. if it was declared inside a funtion, it doesn't exist outside the function. if it exists inside a loop, is does not exist outside the loop. Variables declared outside all loops and functions are considered global and exist while the script is being evaluated.

Event Handler
The following are NOT supported by AE at this time.
 * onAbort
 * onBlur
 * onChange
 * onClick
 * onDblClick
 * onDragDrop
 * onError
 * onFocus
 * onKeyDown
 * onKeyPress
 * onKeyUp
 * onload
 * onMouseDown
 * onMouseMove
 * onMouseOut
 * onMouseOver
 * onMouseUp
 * onMove
 * onReset
 * onResize
 * onSelect
 * onSubmit
 * onUnload

String Object
new String(string)


 * charAt Returns an index of a specified character position
 * charCodeAt Returns the UNICODE value of a specified character at position
 * concat Joins two or more strings together into one
 * fromCharCode Converts UNICODE values into characters
 * indexOf Finds the first occurance of a string or character and returns its index value of its location. If the string is not found 0 is returned.
 * lastIndexOf Finds the last occurance of a string or character and returns its index value of its location. If the string is not found 0 is returned.
 * match Searches a string for a substring, then returns any matches
 * replace Searches a string for a substring, then replaces any matches with a new string
 * search Searches a string for a substring, then returns the position of any matches
 * slice Extracts a part of a string and returns a new string
 * split Creates a substring of a specified string
 * substr Extracts the characters from a string, beginning at a specified start position, and through the specified number of character
 * substring Extracts the characters from a string, between two specified indices
 * toLowerCase Converts a string to lowercase letters
 * toUpperCase Converts a string to uppercase letters
 * valueOf Returns the primitive value of a String object


 * toString Converts a value into a string

String Object Properties
 * .Constructor - a reference to the function which created the object
 * .Length - returns the number of characters in a string
 * .Prototype - Allows you to add methods and properties to the sring object

Objects and Properties
An Object can be a File, project, folder, comp, layer, effect, etc. Each Object has a set of Properties; a file has a name, a layer has potition and rotation. Below are Objects and a few of their possible properties. In After Effects a specific object hierarchy is used. Meaning that objects contain sub-objects as well as properties.
 * application - app
 * settings
 * project
 * renderQueue
 * renderQueueitem(s)
 * outputModule(s)
 * compItem
 * layer(s)
 * properties
 * proxySource
 * solidSource
 * color
 * placeholderSource
 * fileSource
 * file
 * footageItem
 * mainSource
 * solidSource
 * color
 * placeholderSource
 * fileSource
 * file
 * proxySource
 * solidSource
 * color
 * placeholderSource
 * fileSource
 * file
 * folderItem
 * item(s)


 * system
 * file
 * folder
 * socket


 * Classic Javascript Objects


 * Anchor
 * Applet
 * Area
 * Array
 * Boolean
 * Button
 * Checkbox
 * Date
 * Document
 * Event
 * FileUpload
 * Form
 * Frame
 * Function
 * Hidden
 * History
 * Image
 * Layer
 * Math
 * Object
 * Reset
 * Screen
 * String
 * Submit
 * Text
 * Textarea
 * Window
 * Link
 * Location
 * Navigator
 * Number
 * Option
 * Password
 * Radio
 * RegExp
 * Select

Special

 * + Used between to strings to quickly concatinate them together - instead of using the concat method. You can also add with "+=".
 * ,
 * ?:
 * delete
 * new
 * this is a context dependand object or property. It's connected to whatever is being passed to a function.
 * typeof
 * void

Statements

 * try is like an if statement for errors. Everything in a try block will be executed and but if errors occur, catch statements can pick up the error and parse it.
 * throw will send an error out for a catch statement.
 * catch looks for try or thrown errors and reports them.
 * if checks a true / false condition and executed if true.
 * else
 * switch looks up a value like an "if" statement would, but handles multiple results. This is like using a series of elseIf statements.
 * do
 * while
 * for
 * for-in
 * continue
 * break
 * export
 * import
 * label
 * return
 * var
 * with

Constants

 * Main Index
 * Infinity
 * NaN
 * undefined
 * null

Commenting

 * // - Single line comment


 * /* */ - Book ends for a multi-line comment

Resources

 * http://webcheatsheet.com/javascript/variables.php
 * https://www.welookups.com