only ever supported by Sprite and BitmapText. Handle it globally, using
m_size. This way, an actor only needs to set m_size to support alignment.
This means alignment can be set for non-drawing ActorFrames, if a size
is set explicitly. This allows stretching from the border of a frame
without playing games with extra nested frames. "setsize,100,100;valign,4;zoomx,.5"
This adds an extra matrix multiply. This will only happen for actors
actually set to non-centered alignment, which is the exception.
BitmapText still overrides this behavior a bit. Alignment for text
does two things: changes the alignment of the bounding box vs. the
X/Y position (the generic behavior), and changes the alignment of
the text within the bounding box.
yet decided whether these should be -1.0 ... +1.0, indicating
"fully left aligned" and "fully right aligned", or 0.0 ... 1.0,
indicating "anchor to this fractional position in m_size".
It may become the latter.)
they can both have parameters stashed in a table, and they both play
stuff out of the actor command list. Merge them; now the only
difference between playing and broadcasting a command is that playing
plays recursively on a tree and broadcasting sends to all subscribers.
The distinction between "messages" and "commands" is cosmetic now;
everything is a message. The only thing special about commands intended
to be received as a broadcast is the "Message" suffix, which subscribes it.
For each actor, create a context table, with an __index link to the
parent's. This can be used to propagate information down complex
actor trees.
Code needs to be changed to do AddChild() calls before loading,
rather than after, so context links are available during loads.
This will be done as necessary.
bezier curves.
The "bouncebegin" and "bounceend" tweens are now implemented in Lua,
using 2D beziers which approximate the old behavior very closely.
Added "ease" tween, which works like Flash's.
Custom tweens can be used, passing in a table of 4 values for a
1D bezier, or 8 values for 2D.
tween,.5,TweenBezier,{ 0, p1, p2, 1 }
tween,.5,TweenBezier,{ 0, 0, x1, y1, x2, y2, 1, 1 }
As with all tweens, the first parameter is the duration.
The 1D bezier { a, b, c, d } is equivalent to the 2D bezier
{ 0, a, 1/3, b, 2/3, c, 1, d }, but a 1D bezier is more efficient.