#!/usr/bin/perl -w # # Example 9-5. Morphing between a square and a star. # use strict; use SWF::Movie; use SWF::Morph; use SWF::Shape; use SWF::DisplayItem; SWF::setScale(1.0); my $morph = new SWF::Morph(); my $s = $morph->getShape1(); # The initial state of the morph; a red square $s->setLine(0,0,0,0); $s->setLeftFill($s->addFill(255, 0, 0)); $s->movePenTo(0, 0); $s->drawLine(500,0); $s->drawLine(500,0); # Top $s->drawLine(500,0); $s->drawLine(500,0); $s->drawLine(0, 500); $s->drawLine(0, 500); # Right $s->drawLine(0, 500); $s->drawLine(0, 500); $s->drawLine(-500,0); $s->drawLine(-500,0); # Bottom $s->drawLine(-500,0); $s->drawLine(-500,0); $s->drawLine(0, -500); $s->drawLine(0, -500); # Left $s->drawLine(0, -500); $s->drawLine(0, -500); my $s2 = $morph->getShape2(); # The final state: a blue star with a thicker stroke $s2->setLine(200,0,0,0); $s2->setLeftFill($s2->addFill(0, 0, 255)); $s2->movePenTo(-500,-500); $s2->drawLine(1000, 500); $s2->drawLine(500, -500); # Top $s2->drawLine(500, 500); $s2->drawLine(1000, -500); $s2->drawLine(-500, 1000); $s2->drawLine(500, 500); # Right $s2->drawLine(-500, 500); $s2->drawLine(500, 1000); $s2->drawLine(-1000, -500); $s2->drawLine(-500, 500); # Bottom $s2->drawLine(-500, -500); $s2->drawLine(-1000, 500); $s2->drawLine(500, -1000); $s2->drawLine(-500, -500); # Left $s2->drawLine(500, -500); $s2->drawLine(-500, -1000); my $m = new SWF::Movie(); $m->setDimension(4000,4000); $m->setBackground(0xff, 0xff, 0xff); # Add the Morph object to the Movie my $i = $m->add($morph); $i->moveTo(750, 750); for (my $r=0; $r<=20; ++$r) { $i->setRatio(abs((10-$r)/10)); $m->nextFrame(); } $m->save("example9-5.swf");