As the creator of the animation engine for OpenLaszlo, I need to explain the
architecture to answer this question more clearly.
One of the guiding principles for creating the LZX language was to embrace the
deterministic style of programming without sacrificing the kind of experience I
was seeking in developing animated experiences within LZX. The base animation
engine has achieved that. It allows engineers "in effect" to simply describe
the desired end-state interaction and allow the LZX engine to calculate the
necessary steps to give the experience a continuous feel. There is no physics
modeling within Laszlo, even though things "act" as if they have weight when
they move. I know how to model physical dynamics, I have degrees in physics,
computer science, and math. This is, however, is about user interaction.
Interaction that can take place at anytime and that "could" interrupt existing
animations. I did not want developers to be stressed with having to alter
currently executing animations by recalculating some bezier splice in order to
program a smooth simple bounce to an object for something as s!
imple as mouseover/mouseout interactions.
Below is code that any developer could easily understand. I challenge all of
you, however, to run this code as see how different the full interaction is
when you mouseover "slowly" across the boxes as well as "fast" . You may even
try mousing back and forth as fast as you can. The
Object.animate('attribute",to,value,...) call creates a new animation everytime
it is invoked. This call also attaches a new animation object to the attribute.
The previous animations ARE NOT cancelled. They proceed as defined, and it's
the set of animations working together that gives Laszlo animations a
"continuous feel", creating simulated weight properties to objects. This is why
we called it a "cinematic user experience".
Max, what you may want to ask is "How do I get that same experience when I
change the attributes to an existing animation object" like I do when I call
object.animate( ...) for an object that is already being animated. That is a
good question and needs to be fixed without the OpenLaszlo platfrom.
And finally, as far as I know, this type of behavior is not available in the
current CSS style of animation being proposed. At least not with the type of
code syntax used below.
<canvas>
<class name="animatedbox" width="50" height="50" bgcolor="blue"
onmouseover="this.animate('height',150,500)"
onmouseout="this.animate('height',50,500)" />
<simplelayout axis="x" spacing="1" />
<animatedbox/>
<animatedbox/>
<animatedbox/>
<animatedbox/>
<animatedbox/>
<animatedbox/>
<animatedbox/>
<animatedbox/>
<animatedbox/>
</canvas>
-----
Bret Simister
Chief Interface Architect and Cofounder
Laszlo Systems, Inc.
On May 25, 2010, at 12:49 PM, Max Carlson wrote:
> It would it be more efficient to have a single animator per attribute and
> reuse that... Is there an advantage to having multiple simultaneous
> animators running at the same time, vs. setting the 'to' attribute on an
> existing animator?
>
> --
> Regards,
> Max Carlson
> OpenLaszlo.org