©
本文档使用 PHP中文网手册 发布
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.