|  | 
	
		| 
 
 ExamplesTable of Contents
  SWFAction Examples
   This simple example will move the red square across the window.
    
    Example #1 swfaction() example 
<?php$s = new SWFShape();
 $f = $s->addFill(0xff, 0, 0);
 $s->setRightFill($f);
 
 $s->movePenTo(-500, -500);
 $s->drawLineTo(500, -500);
 $s->drawLineTo(500, 500);
 $s->drawLineTo(-500, 500);
 $s->drawLineTo(-500, -500);
 
 $p = new SWFSprite();
 $i = $p->add($s);
 $i->setDepth(1);
 $p->nextFrame();
 
 for ($n=0; $n<5; ++$n) {
 $i->rotate(-15);
 $p->nextFrame();
 }
 
 $m = new SWFMovie();
 $m->setBackground(0xff, 0xff, 0xff);
 $m->setDimension(6000, 4000);
 
 $i = $m->add($p);
 $i->setDepth(1);
 $i->moveTo(-500,2000);
 $i->setName("box");
 
 $m->add(new SWFAction("/box.x += 3;"));
 $m->nextFrame();
 $m->add(new SWFAction("gotoFrame(0); play();"));
 $m->nextFrame();
 
 header('Content-type: application/x-shockwave-flash');
 $m->output();
 ?>
 
   This simple example tracks down your mouse on the screen.
    
    Example #2 swfaction() example 
<?php
 $m = new SWFMovie();
 $m->setRate(36.0);
 $m->setDimension(1200, 800);
 $m->setBackground(0, 0, 0);
 
 /* mouse tracking sprite - empty, but follows mouse so we can
 get its x and y coordinates */
 
 $i = $m->add(new SWFSprite());
 $i->setName('mouse');
 
 $m->add(new SWFAction("
 startDrag('/mouse', 1); /* '1' means lock sprite to the mouse */
 "));
 
 /* might as well turn off antialiasing, since these are just squares. */
 
 $m->add(new SWFAction("
 this.quality = 0;
 "));
 
 /* morphing box */
 $r = new SWFMorph();
 $s = $r->getShape1();
 
 /* Note this is backwards from normal shapes.  No idea why. */
 $s->setLeftFill($s->addFill(0xff, 0xff, 0xff));
 $s->movePenTo(-40, -40);
 $s->drawLine(80, 0);
 $s->drawLine(0, 80);
 $s->drawLine(-80, 0);
 $s->drawLine(0, -80);
 
 $s = $r->getShape2();
 
 $s->setLeftFill($s->addFill(0x00, 0x00, 0x00));
 $s->movePenTo(-1, -1);
 $s->drawLine(2, 0);
 $s->drawLine(0, 2);
 $s->drawLine(-2, 0);
 $s->drawLine(0, -2);
 
 /* sprite container for morphing box -
 this is just a timeline w/ the box morphing */
 
 $box = new SWFSprite();
 $box->add(new SWFAction("
 stop();
 "));
 $i = $box->add($r);
 
 for ($n=0; $n<=20; ++$n) {
 $i->setRatio($n/20);
 $box->nextFrame();
 }
 
 /* this container sprite allows us to use the same action code many times */
 
 $cell = new SWFSprite();
 $i = $cell->add($box);
 $i->setName('box');
 
 $cell->add(new SWFAction("
 
 setTarget('box');
 
 /* ...x means the x coordinate of the parent, i.e. (..).x */
 dx = (/mouse.x + random(6)-3 - ...x)/5;
 dy = (/mouse.y + random(6)-3 - ...y)/5;
 gotoFrame(int(dx*dx + dy*dy));
 
 "));
 
 $cell->nextFrame();
 $cell->add(new SWFAction("
 
 gotoFrame(0);
 play();
 
 "));
 
 $cell->nextFrame();
 
 /* finally, add a bunch of the cells to the movie */
 
 for ($x=0; $x<12; ++$x) {
 for ($y=0; $y<8; ++$y) {
 $i = $m->add($cell);
 $i->moveTo(100*$x+50, 100*$y+50);
 }
 }
 
 $m->nextFrame();
 
 $m->add(new SWFAction("
 
 gotoFrame(1);
 play();
 
 "));
 
 header('Content-type: application/x-shockwave-flash');
 $m->output();
 ?>
 
   Same as above, but with nice colored balls...
    
    Example #3 swfaction() example 
<?php
 $m = new SWFMovie();
 $m->setDimension(11000, 8000);
 $m->setBackground(0x00, 0x00, 0x00);
 
 $m->add(new SWFAction("
 
 this.quality = 0;
 /frames.visible = 0;
 startDrag('/mouse', 1);
 
 "));
 
 // mouse tracking sprite
 $t = new SWFSprite();
 $i = $m->add($t);
 $i->setName('mouse');
 
 $g = new SWFGradient();
 $g->addEntry(0, 0xff, 0xff, 0xff, 0xff);
 $g->addEntry(0.1, 0xff, 0xff, 0xff, 0xff);
 $g->addEntry(0.5, 0xff, 0xff, 0xff, 0x5f);
 $g->addEntry(1.0, 0xff, 0xff, 0xff, 0);
 
 // gradient shape thing
 $s = new SWFShape();
 $f = $s->addFill($g, SWFFILL_RADIAL_GRADIENT);
 $f->scaleTo(0.03);
 $s->setRightFill($f);
 $s->movePenTo(-600, -600);
 $s->drawLine(1200, 0);
 $s->drawLine(0, 1200);
 $s->drawLine(-1200, 0);
 $s->drawLine(0, -1200);
 
 // need to make this a sprite so we can multColor it
 $p = new SWFSprite();
 $p->add($s);
 $p->nextFrame();
 
 // put the shape in here, each frame a different color
 $q = new SWFSprite();
 $q->add(new SWFAction("gotoFrame(random(7)+1); stop();"));
 $i = $q->add($p);
 
 $i->multColor(1.0, 1.0, 1.0);
 $q->nextFrame();
 $i->multColor(1.0, 0.5, 0.5);
 $q->nextFrame();
 $i->multColor(1.0, 0.75, 0.5);
 $q->nextFrame();
 $i->multColor(1.0, 1.0, 0.5);
 $q->nextFrame();
 $i->multColor(0.5, 1.0, 0.5);
 $q->nextFrame();
 $i->multColor(0.5, 0.5, 1.0);
 $q->nextFrame();
 $i->multColor(1.0, 0.5, 1.0);
 $q->nextFrame();
 
 // finally, this one contains the action code
 $p = new SWFSprite();
 $i = $p->add($q);
 $i->setName('frames');
 $p->add(new SWFAction("
 
 dx = (/:mousex-/:lastx)/3 + random(10)-5;
 dy = (/:mousey-/:lasty)/3;
 x = /:mousex;
 y = /:mousey;
 alpha = 100;
 
 "));
 $p->nextFrame();
 
 $p->add(new SWFAction("
 
 this.x = x;
 this.y = y;
 this.alpha = alpha;
 x += dx;
 y += dy;
 dy += 3;
 alpha -= 8;
 
 "));
 $p->nextFrame();
 
 $p->add(new SWFAction("prevFrame(); play();"));
 $p->nextFrame();
 
 $i = $m->add($p);
 $i->setName('frames');
 $m->nextFrame();
 
 $m->add(new SWFAction("
 
 lastx = mousex;
 lasty = mousey;
 mousex = /mouse.x;
 mousey = /mouse.y;
 
 ++num;
 
 if (num == 11)
 num = 1;
 
 removeClip('char' & num);
 duplicateClip(/frames, 'char' & num, num);
 
 "));
 
 $m->nextFrame();
 $m->add(new SWFAction("prevFrame(); play();"));
 
 header('Content-type: application/x-shockwave-flash');
 $m->output();
 ?>
 
 |  |  |      
 |  |  |