<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:"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;}
 /* 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.E-MailFormatvorlage18
        {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'>Hi,<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>think this method of John is really cool too. I hate string
properties too. But as you mentioned: For universal handling this is no real
possibility :( If the advantage is much bigger than the disadvantage, you can
give up strict typing, at least in my eyes.<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>Maybe you're right. A universal tween class can not be that good
as specialized classes. But I think it can be really hard to know and use
several tween classes. And all popular tween classes are universal tween
classes. But perhaps this will change in future. We will see.<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>best regards<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>sebastian<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</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> Mittwoch, 7. Mai 2008 00:06<br>
<b>An:</b> Mailing list for the Go ActionScript Animation Platform<br>
<b>Betreff:</b> Re: [Golist] This looks a bit better as far as syntax<o:p></o:p></span></p>

</div>

</div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>Hehe, sorry. And they let me write for a book! ;)<o:p></o:p></p>

<div>

<p class=MsoNormal>Let me try again....<o:p></o:p></p>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=MsoNormal><span class=apple-style-span><u>Turn ons:</u></span>&nbsp;What
you're doing is better for strict typing because the properties are real
properties &#8211; that is cool. I like how you have x() etc., that's really
cool. In mine you had to do properties as strings like &quot;x&quot;.<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=MsoNormal><span class=apple-style-span><u>Turn offs:</u></span><span
class=apple-style-span>&nbsp;I'm starting to lean against&nbsp;multi-property
tween classes in general.&nbsp;Because, it's easy to&nbsp;forget how complex
just ONE tween can be. Like, think of a color tween or a filter tween &#8211;
multiple properties in arrays, nested in subproperties of display objects...
gets hairy. Start values and relative values are another can of worms.</span><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=MsoNormal>Lately I've been thinking that<i>&nbsp;</i>a tween instance
is more like an atom than a molecule.&nbsp;That's why I'm now gravitating back
toward individual-property tween classes. That, and OverlapMonitor would be
able to handle every property individually.&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=MsoNormal>Have not built this out though....&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>But I'm wondering if there would some way to do that cool
property syntax thing you're doing, but at the PlayableGroup level?<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=MsoNormal>- m<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<div>

<div>

<p class=MsoNormal>On May 6, 2008, at 4:38 PM, John Grden wrote:<o:p></o:p></p>

</div>

<p class=MsoNormal><br>
<br>
<o:p></o:p></p>

<p class=MsoNormal style='margin-bottom:12.0pt'>So I'm confused a bit -seems
like you said you were leaning towards 1 property per tween that exists, but
you like what I'm doing with that last code sample<br>
<br>
LOL I know I missed something<br>
<br>
I think that I started to get what you meant though - having those apart of a
PlayableGroup etc is essentially what we end up with, is that about right?<o:p></o:p></p>

<div>

<p class=MsoNormal>On Tue, May 6, 2008 at 3:17 PM, Moses Gunesch &lt;<a
href="mailto:moses@goasap.org">moses@goasap.org</a>&gt; wrote:<o:p></o:p></p>

<div>

<p class=MsoNormal>Yeah that's good. I created a system called OpenTween
&#8211; don't think I ever posted it though because I wasn't sure I liked the
abstraction layer of putting a ton of information and functionality into
property classes which is what happened when I tried this.<o:p></o:p></p>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=MsoNormal>My property inputs were<o:p></o:p></p>

</div>

<div>

<div>

<p class=MsoNormal>&nbsp;&nbsp;propName: <span style='color:#373737'>String</span>,&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>&nbsp; endVal: *=<span style='color:#7F0055'>null</span>,&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>&nbsp; endValRelative: <span style='color:#373737'>Boolean</span>=<span
style='color:#7F0055'>false</span>,&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>&nbsp; startVal: *=<span style='color:#7F0055'>null</span>,&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>&nbsp; startValRelative: <span style='color:#373737'>Boolean</span>=<span
style='color:#7F0055'>false</span><o:p></o:p></p>

</div>

</div>

<div>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=MsoNormal>Then I had this functionality in there from Fuse, that lets
you omit either start or end and it will figure it out. That's probably why it
got complicated.&nbsp;&nbsp;(I will share OpenTween if you want.)<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=MsoNormal>Anyway yeah I think there is something to a multi-property
approach for sure, but I've been leaning back toward just extending LinearGo in
the simplest way possible &#8211; one property per tween class.&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=MsoNormal><b>Here is why:</b> if every single property were in a
separate tween class, OverlapMonitor works the best in that it can allow just
one property to be paused, stopped and so on. That's how ZigoEngine worked, it
atomized every tween internally. I've been thinking PlayableGroup could be
extended to handle multi-prop tweens by creating separate tween instances, then
it could let you drill into them to grab children by property etc.&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=MsoNormal>One could argue that it's slower to not block all similar
tweens, but it also provides more control and is less abstract, and I've found
that in real practice there are usually only a very small number of
&quot;blocked&quot; tweens at once... pretty soon you want to change
delay/duration/easing on one property or another and you end up with a group
anyway.<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=MsoNormal>That said, I'd love to see your concept taken all the way
John...!<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=MsoNormal>:-)<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

</div>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<div>

<div>

<div>

<div>

<p class=MsoNormal>On May 6, 2008, at 3:54 PM, John Grden wrote:<o:p></o:p></p>

</div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

</div>

<blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'>

<div>

<div>

<p class=MsoNormal><b>Was this:</b><br>
tween_0 = new Tween3D(target, 1, Equations.easeOutCubic);<br>
tween_0.x = 0;<br>
tween_0.y = 50;<br>
tween_0.rotationZ = 0;<br>
sequence.addStep(tween_0);<br>
<br>
sequence.lastStep.advance = new OnDurationComplete(.2); // advance
early/overlap<br>
tween_0b = new Tween3D(target, 1, Equations.easeOutCubic);<br>
tween_0b.z = 200;<br>
sequence.addStep(tween_0b, true); // 2nd param groups it with previous step. param
is &quot;addToLastStep&quot;<br>
<br>
tween_1 = new Tween3D(target, 1, Equations.easeOutCubic);<br>
tween_1.x = -10;<br>
tween_1.y = 85;<br>
tween_1.rotationZ = 15;<br>
sequence.addStep(tween_1);<br>
sequence.lastStep.advance = new OnDurationComplete(.25); // advance
early/overlap<br>
<br>
tween_2 = new Tween3D(target, 1, Equations.easeOutBounce);<br>
tween_2.rotationX = 0;<br>
tween_2.rotationY = 0;<br>
sequence.addStep(tween_2);<br>
<br>
<b>Is now this:</b><br>
<br>
tween_0 = new Tween3D(target, [Go3D.x(0), Go3D.y(50), Go3D.rotationZ(0)], 1,
Equations.easeOutCubic);<br>
sequence.addStep(tween_0);<br>
sequence.lastStep.advance = new OnDurationComplete(.2); // advance
early/overlap<br>
<br>
tween_0b = new Tween3D(target, [Go3D.z(200)], 1, Equations.easeOutCubic);<br>
sequence.addStep(tween_0b, true); // 2nd param groups it with previous step.
param is &quot;addToLastStep&quot;<br>
<br>
tween_1 = new Tween3D(target, [Go3D.x(-10), Go3D.y(85), Go3D.rotationZ(15)], 1,
Equations.easeOutCubic);<br>
sequence.addStep(tween_1);<br>
sequence.lastStep.advance = new OnDurationComplete(.25); // advance
early/overlap<br>
<br>
tween_2 = new Tween3D(target, [Go3D.rotationX(0), Go3D.rotationY(0)], 1,
Equations.easeOutBounce);<br>
sequence.addStep(tween_2);<br clear=all>
<br>
<br>
I'm still thinking about this approach, but thought I would throw it out to you
guys to see what you thought.&nbsp; Right now, there's static methods in Go3D that
return a Go3Dproperty.&nbsp; Tween3D has an array called propertyChanges and if
there is an array in the propertyChanges argument, I just set it straight away
- no parsing required.&nbsp; It's all ready to go and is filled with
Go3DProperty objects.<br>
<br>
Thoughts?<br>
-- <o:p></o:p></p>

</div>

</div>

<p class=MsoNormal>[ JPG ] _______________________________________________<br>
GoList mailing list<br>
<a href="mailto:GoList@goasap.org" target="_blank">GoList@goasap.org</a><br>
<a href="http://goasap.org/mailman/listinfo/golist_goasap.org" target="_blank">http://goasap.org/mailman/listinfo/golist_goasap.org</a><o:p></o:p></p>

</blockquote>

</div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

</div>

<p class=MsoNormal style='margin-bottom:12.0pt'><br>
_______________________________________________<br>
GoList mailing list<br>
<a href="mailto:GoList@goasap.org">GoList@goasap.org</a><br>
<a href="http://goasap.org/mailman/listinfo/golist_goasap.org" target="_blank">http://goasap.org/mailman/listinfo/golist_goasap.org</a><o:p></o:p></p>

</div>

<p class=MsoNormal><br>
<br clear=all>
<br>
-- <br>
[ JPG ] _______________________________________________<br>
GoList mailing list<br>
<a href="mailto:GoList@goasap.org">GoList@goasap.org</a><br>
<a href="http://goasap.org/mailman/listinfo/golist_goasap.org">http://goasap.org/mailman/listinfo/golist_goasap.org</a><o:p></o:p></p>

</div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

</div>

</div>

</body>

</html>