<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 12 (filtered medium)">
<style>
<!--
/* Font Definitions */
@font-face
        {font-family:Helvetica;
        panose-1:2 11 6 4 2 2 2 2 2 4;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:Monaco;
        panose-1:0 0 0 0 0 0 0 0 0 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.apple-style-span
        {mso-style-name:apple-style-span;}
span.apple-tab-span
        {mso-style-name:apple-tab-span;}
span.E-MailFormatvorlage19
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page Section1
        {size:612.0pt 792.0pt;
        margin:70.85pt 70.85pt 2.0cm 70.85pt;}
div.Section1
        {page:Section1;}
-->
</style>
<!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang=DE link=blue vlink=purple style='word-wrap: break-word;-webkit-nbsp-mode: space;
-webkit-line-break: after-white-space'>
<div class=Section1>
<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>I really hope to finde some time for "tweego" the next
days. Unfortunately I'm busy in another project :(<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p> </o:p></span></p>
<div>
<div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm'>
<p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>Von:</span></b><span
style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>
golist-bounces@goasap.org [mailto:golist-bounces@goasap.org] <b>Im Auftrag von </b>Moses
Gunesch<br>
<b>Gesendet:</b> Donnerstag, 21. Februar 2008 08:47<br>
<b>An:</b> Mailing list for the Go ActionScript Animation Platform<br>
<b>Betreff:</b> [Golist] Fuse-like parser in a few minutes!<o:p></o:p></span></p>
</div>
</div>
<p class=MsoNormal><o:p> </o:p></p>
<div>
<p class=MsoNormal>I will do a video tut on this topic soon.<o:p></o:p></p>
</div>
<div>
<p class=MsoNormal><o:p> </o:p></p>
</div>
<div>
<p class=MsoNormal>My hope with Go was that the tween layer would typically
stay OO in nature, then people could build custom parsers to do Fuse syntax,
XML syntax or anything custom. Well, I gave it a shot and it worked just
fine! Having labored so long over Fuse myself, it was a little shocking how
easy this was.<o:p></o:p></p>
</div>
<div>
<div>
<p class=MsoNormal><o:p> </o:p></p>
</div>
<div>
<p class=MsoNormal>First, I made a general multiple-property tween class that I
called BlockTweenMG. It has a method setProperty(name:String, value:Number) and
the constructor simply accepts two arrays like zigoengine used to:
(target:Object=null, props:Array=null, endVals:Array=null...). It's
versatile enough to start with, although it doesn't support filters or other
fanciness.<o:p></o:p></p>
</div>
<div>
<p class=MsoNormal><o:p> </o:p></p>
</div>
<div>
<p class=MsoNormal>Next I created a parser class that I called BlockParserMG
with a static method called go() and one called sequence(), pluse one private
static method parseAction() that parses a generic fuse object and returns a new
BlockTweenMG. <o:p></o:p></p>
</div>
<div>
<p class=MsoNormal><o:p> </o:p></p>
</div>
<div>
<div>
<p class=MsoNormal><span style='font-size:8.5pt;font-family:"Monaco","serif";
color:#7F0055'>public</span><span style='font-size:8.5pt;font-family:"Monaco","serif"'>
<span style='color:#7F0055'>static</span> <span style='color:#7F0055'>function</span>
go(action:<span style='color:#373737'>Object</span>): BlockTweenMG {<o:p></o:p></span></p>
</div>
<div>
<p class=MsoNormal><span style='font-size:8.5pt;font-family:"Monaco","serif"'>
<span style='color:#7F0055'>var</span> tween:BlockTweenMG =
parseAction(action);<o:p></o:p></span></p>
</div>
<div>
<p class=MsoNormal><span style='font-size:8.5pt;font-family:"Monaco","serif"'>
tween.start();<o:p></o:p></span></p>
</div>
<div>
<p class=MsoNormal><span style='font-size:8.5pt;font-family:"Monaco","serif"'>
<span style='color:#7F0055'>return</span> tween;<o:p></o:p></span></p>
</div>
<div>
<p class=MsoNormal><span style='font-size:8.5pt;font-family:"Monaco","serif"'>}<o:p></o:p></span></p>
</div>
<div>
<p class=MsoNormal><o:p> </o:p></p>
</div>
</div>
<div>
<p class=MsoNormal>While go() just parses & starts one tween, sequence()
will parse any number of actions using an open input (...actions). It was easy
to make it support arrays of objects for parallel tweens like in Fuse. It
builds & returns a SequenceCA instance. <o:p></o:p></p>
</div>
<div>
<p class=MsoNormal><o:p> </o:p></p>
</div>
<div>
<p class=MsoNormal>parseAction() is amazingly lightweight. It makes the tween
and loops through the properties of the object. It goes, if
(tween.hasOwnProperty(prop)) then set the prop on the tween... this takes care
of all the basic tween props: delay, duration, easing, etc. Otherwise assume
it's a tween prop and use the addProperty() method on the tween
instance. This was all simply too easy, so I threw in one bit of
fanciness. Go's SequenceCA class supports Custom-Advance options for sequencing
so I added a conditional to look for the property 'advance' and set it to the
current SequenceStepCA.<o:p></o:p></p>
</div>
<div>
<p class=MsoNormal><o:p> </o:p></p>
</div>
<div>
<p class=MsoNormal>I ran this sequence and voila, it worked without a hitch!<o:p></o:p></p>
</div>
<div>
<p class=MsoNormal><o:p> </o:p></p>
</div>
<div>
<div>
<p class=MsoNormal><span style='font-size:8.5pt;font-family:"Monaco","serif";
color:#7F0055'>var</span><span style='font-size:8.5pt;font-family:"Monaco","serif"'>
targ:Sprite = addSquareSprite();<o:p></o:p></span></p>
</div>
<div>
<p class=MsoNormal><span style='font-size:8.5pt;font-family:"Monaco","serif"'>BlockParserMG.sequence({
target: targ,<o:p></o:p></span></p>
</div>
<div>
<p class=MsoNormal><span class=apple-style-span><span style='font-size:9.0pt;
font-family:"Helvetica","sans-serif"'>
</span></span><span style='font-size:8.5pt;
font-family:"Monaco","serif"'> x:200,<o:p></o:p></span></p>
</div>
<div>
<p class=MsoNormal><span class=apple-style-span><span style='font-size:9.0pt;
font-family:"Helvetica","sans-serif"'>
</span></span><span style='font-size:8.5pt;
font-family:"Monaco","serif"'> scaleX:5,<o:p></o:p></span></p>
</div>
<div>
<p class=MsoNormal><span class=apple-style-span><span style='font-size:9.0pt;
font-family:"Helvetica","sans-serif"'>
</span></span><span style='font-size:8.5pt;
font-family:"Monaco","serif"'> duration:2,<o:p></o:p></span></p>
</div>
<div>
<p class=MsoNormal><span class=apple-style-span><span style='font-size:9.0pt;
font-family:"Helvetica","sans-serif"'>
</span></span><span style='font-size:8.5pt;
font-family:"Monaco","serif"'> //
custom-advance before the action completes:<o:p></o:p></span></p>
</div>
<div>
<p class=MsoNormal><span class=apple-style-span><span style='font-size:9.0pt;
font-family:"Helvetica","sans-serif"'>
</span></span><span style='font-size:8.5pt;
font-family:"Monaco","serif"'> advance: <span
style='color:#7F0055'>new</span> OnDurationComplete(.5)<o:p></o:p></span></p>
</div>
<div>
<p class=MsoNormal><span class=apple-style-span><span style='font-size:9.0pt;
font-family:"Helvetica","sans-serif"'>
</span></span><span style='font-size:8.5pt;
font-family:"Monaco","serif"'> },<o:p></o:p></span></p>
</div>
<div>
<p class=MsoNormal><span style='font-size:8.5pt;font-family:"Monaco","serif"'><o:p> </o:p></span></p>
</div>
<div>
<p class=MsoNormal><span class=apple-style-span><span style='font-size:9.0pt;
font-family:"Helvetica","sans-serif"'>
</span></span><span style='font-size:8.5pt;
font-family:"Monaco","serif"'> // a
parallel-action array<o:p></o:p></span></p>
</div>
<div>
<p class=MsoNormal><span class=apple-style-span><span style='font-size:9.0pt;
font-family:"Helvetica","sans-serif"'>
</span></span><span style='font-size:8.5pt;
font-family:"Monaco","serif"'> [{ target: targ,<o:p></o:p></span></p>
</div>
<div>
<p class=MsoNormal><span class=apple-style-span><span style='font-size:9.0pt;
font-family:"Helvetica","sans-serif"'>
</span></span><span style='font-size:8.5pt;
font-family:"Monaco","serif"'>
y:200,<o:p></o:p></span></p>
</div>
<div>
<p class=MsoNormal><span class=apple-style-span><span style='font-size:9.0pt;
font-family:"Helvetica","sans-serif"'>
</span></span><span style='font-size:8.5pt;
font-family:"Monaco","serif"'>
scaleY:5,<o:p></o:p></span></p>
</div>
<div>
<p class=MsoNormal><span class=apple-style-span><span style='font-size:9.0pt;
font-family:"Helvetica","sans-serif"'>
</span></span><span style='font-size:8.5pt;
font-family:"Monaco","serif"'>
duration:1.5,<o:p></o:p></span></p>
</div>
<div>
<p class=MsoNormal><span class=apple-style-span><span style='font-size:9.0pt;
font-family:"Helvetica","sans-serif"'>
</span></span><span style='font-size:8.5pt;
font-family:"Monaco","serif"'>
easing:Back.easeOut<o:p></o:p></span></p>
</div>
<div>
<p class=MsoNormal><span class=apple-style-span><span style='font-size:9.0pt;
font-family:"Helvetica","sans-serif"'>
</span></span><span style='font-size:8.5pt;
font-family:"Monaco","serif"'> },<o:p></o:p></span></p>
</div>
<div>
<p class=MsoNormal><span class=apple-style-span><span style='font-size:9.0pt;
font-family:"Helvetica","sans-serif"'>
</span></span><span style='font-size:8.5pt;
font-family:"Monaco","serif"'>
{ target: targ,<o:p></o:p></span></p>
</div>
<div>
<p class=MsoNormal><span class=apple-style-span><span style='font-size:9.0pt;
font-family:"Helvetica","sans-serif"'>
</span></span><span style='font-size:8.5pt;
font-family:"Monaco","serif"'>
rotation:180,<o:p></o:p></span></p>
</div>
<div>
<p class=MsoNormal><span class=apple-style-span><span style='font-size:9.0pt;
font-family:"Helvetica","sans-serif"'>
</span></span><span style='font-size:8.5pt;
font-family:"Monaco","serif"'>
easing:Back.easeInOut<o:p></o:p></span></p>
</div>
<div>
<p class=MsoNormal><span class=apple-style-span><span style='font-size:9.0pt;
font-family:"Helvetica","sans-serif"'>
</span></span><span style='font-size:8.5pt;
font-family:"Monaco","serif"'> <span class=apple-tab-span> </span>}]);<o:p></o:p></span></p>
</div>
<div>
<p class=MsoNormal><span style='font-size:8.5pt;font-family:"Monaco","serif"'><o:p> </o:p></span></p>
</div>
<div>
<div>
<p class=MsoNormal><span style='font-size:9.0pt;font-family:"Helvetica","sans-serif"'>I'll
have a tutorial up soon on this, but don't wait... Try this at home! <o:p></o:p></span></p>
</div>
<div>
<p class=MsoNormal><span style='font-size:9.0pt;font-family:"Helvetica","sans-serif"'><o:p> </o:p></span></p>
</div>
<div>
<p class=MsoNormal><span style='font-size:9.0pt;font-family:"Helvetica","sans-serif"'>If
you're not into Fuse syntax, try inventing your own XML syntax for condensing
animation code, or surprise us with something totally new.<o:p></o:p></span></p>
</div>
<div>
<p class=MsoNormal><span style='font-size:9.0pt;font-family:"Helvetica","sans-serif"'><o:p> </o:p></span></p>
</div>
<div>
<p class=MsoNormal><span style='font-size:9.0pt;font-family:"Helvetica","sans-serif"'>:)<o:p></o:p></span></p>
</div>
<div>
<p class=MsoNormal><span style='font-size:9.0pt;font-family:"Helvetica","sans-serif"'><o:p> </o:p></span></p>
</div>
<div>
<p class=MsoNormal><span style='font-size:9.0pt;font-family:"Helvetica","sans-serif"'>-
m<o:p></o:p></span></p>
</div>
<div>
<p class=MsoNormal><span style='font-size:9.0pt;font-family:"Helvetica","sans-serif"'><o:p> </o:p></span></p>
</div>
<div>
<p class=MsoNormal><span style='font-size:9.0pt;font-family:"Helvetica","sans-serif"'><o:p> </o:p></span></p>
</div>
</div>
</div>
</div>
</div>
</body>
</html>