Ming - reuse objects instead of generating them again and again
Reuse SWF-objects, not your functions that create SWF-objects. I often see code like:
#!/usr/bin/perl -w use strict; use SWF ("Shape"); my $m2 = new SWF::Movie(); #stupid for (my $i=1;$i<50;$i++) { my $shape = &makeShape(30,50); my $s_i = $m2->add($shape); $s_i->moveTo($i*5,$i); } $m2->nextFrame(); $m2->save("profiling_stupid.swf"); sub makeShape{ my ($x,$y)=@_; my $s = new SWF::Shape(); $s->drawLine($x,$y); #etc. return $s; }
This creates 50 objects, and 50 shape definitions will hang around in your swf, blowing it up like a MS WORD blows fast up its documents just for typing a few stupid sentences.
Why not:
#!/usr/bin/perl -w use strict; use SWF ("Shape"); my $m1 = new SWF::Movie(); #clever my $shape = &makeShape(30,50); for (my $i=1;$i<50;$i++) { my $s_i = $m1->add($shape); $s_i-<moveTo($i*5,$i); } $m1-<nextFrame(); $m1-<save("profiling_clever.swf"); shb makeShape{ my ($x,$y)=@_; my $s = new SWF::Shape(); $s-<drawLine($x,$y); #etc. return $s; }
This has exact the same result in the flashplayer, but only has to hold one shapeobjectdefinition in the SWF.