|
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(); ?>
|