Exemples avec SWFAction

Cet exemple simple déplace un carré rouge dans une fenêtre.

Exemple #1 Exemple avec swfaction()

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

Cet exemple simple va déplacer votre souris vers le bas de l'écran.

Exemple #2 Exemple avec swfaction()

<?php

  $m 
= new SWFMovie();
  
$m->setRate(36.0);
  
$m->setDimension(1200800);
  
$m->setBackground(000);

  
/* objet de suivi de la souris - vide, mais suit les mouvements de la souris
     afin d'y récupérer les coordonnées x et y */

  
$i $m->add(new SWFSprite());
  
$i->setName('mouse');

  
$m->add(new SWFAction("
    startDrag('/mouse', 1); /* '1' signifie que l'on verrouille le sprite à la souris */
  "
));

  
/* on désactive l'antialiasing, vu que l'on souhaite juste utiliser des carrés */

  
$m->add(new SWFAction("
    this.quality = 0;
  "
));

  
/* modification de la boite */
  
$r = new SWFMorph();
  
$s $r->getShape1();

  
$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);

  
/* conteneur sprite, pour la modification de la boite */

  
$box = new SWFSprite();
  
$box->add(new SWFAction("
    stop();
  "
));
  
$i $box->add($r);

  for (
$n=0$n<=20; ++$n) {
    
$i->setRatio($n/20);
    
$box->nextFrame();
  }

  
/* Ce conteneur de sprite nous permet d'utiliser la même action plusieurs fois */

  
$cell = new SWFSprite();
  
$i $cell->add($box);
  
$i->setName('box');

  
$cell->add(new SWFAction("

    setTarget('box');

    /* ...x signifie la coordonnée en x du 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();

  
/* et pour finir, ajoutons quelques cellules à notre vidéo */

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

Idem que l'exemple ci-dessus, mais avec de beaux ballons colorés...

Exemple #3 Exemple avec swfaction()

<?php

  $m 
= new SWFMovie();
  
$m->setDimension(110008000);
  
$m->setBackground(0x000x000x00);

  
$m->add(new SWFAction("

this.quality = 0;
/frames.visible = 0;
startDrag('/mouse', 1);

  "
));

  
// la souris suit le 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);

  
// une forme en gradient
  
$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);

  
// nous devons en faire un sprite, afin de pouvoir le colorer
  
$p = new SWFSprite();
  
$p->add($s);
  
$p->nextFrame();

  
// on y ajoute la forme, chaque frame avec une couleur différente
  
$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();

  
// et pour finir, celui-ci contient le code action
  
$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();
?>

add a note add a note

User Contributed Notes 3 notes

up
1
Ross Smith
3 years ago
These examples does not work, unless you add
ming_useswfversion(4);
to the beginning, as found in the examples here:
http://ming.sourceforge.net/examples/index.html
up
0
Oliver
5 years ago
You may get a "syntax error" when trying the above examples. To solve this, remove the slash "/" from the following line in example 1:

$m->add(new SWFAction("/box.x += 3;"));

Similarly in the other examples.
up
-1
taral dot m dot oza at gmail dot com
3 years ago
I think we can solve this problem by putting // (double slashes) at everywhere where / (single slash) is used in constructor .

I have test it to my local .. It works fine for me ..
To Top