ming-php-examples-php-swfaction-9

  • Examples
  • SWFAction Examples

  • SWFAction Examples
  • SWFAction Examples

    SWFAction Examples

    This simple example will move the red square across
    the window.

    Example #1 swfaction() example

    <?php
      $s 
    = new SWFShape();
      
    $f $s->addFill(0xff00);
      
    $s->setRightFill($f);

      $s->movePenTo(-500, -500);
      
    $s->drawLineTo(500, -500);
      
    $s->drawLineTo(500500);
      
    $s->drawLineTo(-500500);
      
    $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(0xff0xff0xff);
      
    $m->setDimension(60004000);

      $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(1200800);
      
    $m->setBackground(000);

      /* 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(0xff0xff0xff));
      
    $s->movePenTo(-40, -40);
      
    $s->drawLine(800);
      
    $s->drawLine(080);
      
    $s->drawLine(-800);
      
    $s->drawLine(0, -80);

      $s $r->getShape2();

      $s->setLeftFill($s->addFill(0x000x000x00));
      
    $s->movePenTo(-1, -1);
      
    $s->drawLine(20);
      
    $s->drawLine(02);
      
    $s->drawLine(-20);
      
    $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+50100*$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(110008000);
      
    $m->setBackground(0x000x000x00);

      $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(00xff0xff0xff0xff);
      
    $g->addEntry(0.10xff0xff0xff0xff);
      
    $g->addEntry(0.50xff0xff0xff0x5f);
      
    $g->addEntry(1.00xff0xff0xff0);

      // gradient shape thing
      
    $s = new SWFShape();
      
    $f $s->addFill($gSWFFILL_RADIAL_GRADIENT);
      
    $f->scaleTo(0.03);
      
    $s->setRightFill($f);
      
    $s->movePenTo(-600, -600);
      
    $s->drawLine(12000);
      
    $s->drawLine(01200);
      
    $s->drawLine(-12000);
      
    $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.01.01.0);
      
    $q->nextFrame();
      
    $i->multColor(1.00.50.5);
      
    $q->nextFrame();
      
    $i->multColor(1.00.750.5);
      
    $q->nextFrame();
      
    $i->multColor(1.01.00.5);
      
    $q->nextFrame();
      
    $i->multColor(0.51.00.5);
      
    $q->nextFrame();
      
    $i->multColor(0.50.51.0);
      
    $q->nextFrame();
      
    $i->multColor(1.00.51.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();
    ?>