文字

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

  


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

  
$m -> add (new  SWFAction ( "
    startDrag('/mouse', 1); 
  "
));

  


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

  

  
$r  = new  SWFMorph ();
  
$s  $r -> getShape1 ();

  

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

  


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

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

  


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

  
$cell -> add (new  SWFAction ( "

    setTarget('box');

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

  


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

用户评论:

[#1] Ross Smith [2010-10-04 07:22:55]

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

[#2] taral dot m dot oza at gmail dot com [2010-06-23 23:57:02]

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 ..

[#3] Oliver [2009-04-07 05:48:16]

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.

上一篇: 下一篇: