Thursday, September 22, 2005

Movie clip and Graphic symbol differences strike again

Ever wonder why you can't apply filters to graphic symbols in Flash 8? This is certainly a limitation animators will run into again and again. While there could have been a technical solution, this feature was essentially cut due to time constraints and the involved complexity.

They key part is to understand what graphic symbols are. Although they seem to handle the same way as movie clips, they really only exist in the authoring environment. When you publish to SWF they are flattened out to plain shapes. That means the player would not know how to apply the filters as the sense of object hierarchy is gone due to the flattening.

One of the technical solutions for this would have been to export graphic symbols as movie clips behind the scenes. The problem with this is that a movie clip time line is not synchronized with the parent timeline, it uses its own timing. The whole point of graphic symbols is exactly that: have animations play synchronized on the same time line. And the whole point of movie clips is that they are not synchronized and can be individually controlled. So somehow we needed a mix between these two symbol types.

I am disappointed that we were not able to fix this in this release, but in the future (meaning I give no guarantee this will ever be implemented, when it will be implememented, how it will be implemented etc. You get the picture...) I'll be looking into a solution where you can tie movie clip time lines together which would resolve this problem. And while at it, why do we not add the same thing for NetStream objects? ;-) In ActionScript this could look like this:

MovieClip.syncTo(movieClip:MovieClip,
startFrame:Number, endFrame:Number):Void;
MovieClip.syncTo(netStream:NetStream,
startTime:Number, endTime:Number):Void;

One of the side effects of this solution is that some calls like MovieClip.stop(), MovieClip.play() etc. would have no effect anymore until you untie the time lines. Let me know what think.

11 Comments:

Blogger stefan said...

hi tinic -

thanks for your articles. i love them!!! :) STEF

Thursday, September 22, 2005 4:31:00 PM  
Anonymous Peter said...

I really like that syncTo idea Tinic!

Is there a technical reason why a stop or play command could not automatically unsync the two timelines? Perhaps have a MovieClip property that defines whether or not those timeline events on a linked source are to be ignored or not.

Thursday, September 22, 2005 4:48:00 PM  
Anonymous JesterXL said...

syncing to NetStream's is great. While you're at it, the ability to do that with sound would be great too. Currently, the only way to ensure synced sound is to use authortime "stream" sound; if you could tie a movieclip to a sound, perhaps one via loadSound or one it's scoped to, this would remove that limitation.

Great ideas!

Thursday, September 22, 2005 6:17:00 PM  
Anonymous Chris Velevitch said...

Stop, play and even gotoAndPlay should all work with sync'ed movies. It sounds like syncTo should return a new movieClip that is the merge of the 2 movies.

Thursday, September 22, 2005 10:16:00 PM  
Anonymous Anonymous said...

Sounds like a great idea to me! That's a big problem that's arising with Flash, not only at runtime but in the authoring environment. It's way too hard to sync things.

Friday, September 23, 2005 6:20:00 AM  
Anonymous Chris Charlton said...

Good post. This was asked about during Greg Rewis' Studio 8 Q&A (here in L.A.) last night.

Friday, September 23, 2005 10:58:00 AM  
Blogger tomsamson said...

hm, interesting solution concept, might be really nice =)
though instead of making timeline control specific commands not work anymore for tied mcs, i´d expect that when you tie an mc to another timeline; applying timeline control commands would affect both timelines (so affecting both tied together ones),no?
In ideal case you should be able to set if timeline commands affect both tied elements or none or just the one the command was triggered in.

Saturday, September 24, 2005 12:08:00 AM  
Blogger Tek said...

It seems to be the first step to have a timeline scalability, so I think it is really a good idea.

I mean, why not in the future just had an argument to tell the MovieClip to synhronize to its controller every float(n) frames ?

Something like :

MovieClip.syncTo(movieClip:MovieClip, startFrame:Number, endFrame:Number,syncFactor:Number):Void;

MovieClip.syncTo(netStream:NetStream, startFrame:Number, endFrame:Number,syncFactor:Number):Void;

Saturday, September 24, 2005 2:03:00 PM  
Anonymous Anonymous said...

one of the things missing from Flash 8 is the abilty to do prespective type transforms.

Think of envelope or distorting a simple shape in the IDE.

With Bitmap caching of Movieclips would it not have been posscible to apply these to Movieclips?

Wednesday, September 28, 2005 7:10:00 AM  
Blogger satish said...

can we use in future the different frame rates to main timeline and to movie clip timeline?

Wednesday, February 14, 2007 11:20:00 PM  
Anonymous <a href="http://drugscenterhere.com">ShopMan</a> said...

I like articles like this. Thanks!

Sunday, August 26, 2007 12:38:00 AM  

Post a Comment

<< Home