Keyframes are what make up the animation for an actor.
Each keyframe has a time in seconds and can specify any or all of the following attributes.
position : x,y
scale : scalex,scaley
angle : rotation in degrees
alpha : Transparency 0-255
color : R,G,B colorize

Each actor only requires 1 keyframe, however these actors will be static. They will appear at the time of the keyframe and remain displayed until the end of the movie. This is useful for backgrounds.

For actors with more than 1 keyframe, each keyframe need only specify the values which should change from the previous frame. ie. If the actor is initially given a position and a scale, but in the next frame only to changes position, you do not need to specify the scale values again.

Stop Motion or Tweened

The default mode for animations is "Stop Motion". The actor will keep the values assigned in one keyframe, until the time of the next keyframe. When the next keyframe arrives the actor will "jump" to the values set by the new keyframe.

This was used to good effect in a number of the original movies, Chapter3Mid for example.

However it is also possible to have the actor change "smoothly" from the values given in one frame to the values in the next. Often called tweening, this can activated by setting the interpolation attribute to 'linear'.
Interpolation can be set (or not) for each keyframe in each actor.

Most of the values change intuitively; positions, scales, alpha etc... however angle has a couple of "quirks".
The game will attempt to take the "shortest" path between 2 angles...
So if you specify a starting angle of 0, and the next keyframe is set to 360, the actor will not rotate.
If you start at 0 and the next frame is 359 degrees, the actor will make a rotation of only 1 degree, rather than spinning all the way around.

To get a full rotation(or rotations)...
2D Boy used 3 keyframes with angles set to 0 , 180 , 360
But you can get the same effect by having 2 keyframes with angles set to 0 and 720
This may seem odd, but it appears the game subtracts 360 from the angle if it is greater than 180.
So by supplying larger angles (like 720) you can "trick" the game into performing a full rotation using only 2 frames.


A keyframe, except the last one in an actor, can also play a sound.
However, if you set the sounds to play in the normal moving actors, you will find it can be hard to properly syncronise the sound with the action. This is often because the sound file has a small amount of silence at the beginning, so if you set the sound to play at exactly the same time as an action occurs, the sound appears to lag behind the action.
One easy way around this is to add all the sounds as extra keyframes in one of the static actors. That way you can tweak the keyframe times to get the sounds matching up, without affecting the animation of the actor which is apparently making the sound.

As well as typing values into the properties pane, you can add / edit the [keyframes in the GUI]