SWFGradient

(PHP 4 >= 4.0.5)

SWFGradient -- Creates a gradient object

Description

SWFGradient swfgradient ( void )

警告

本函数是实验性的。本函数的行为,包括函数名称以及其它任何关于本函数的文档可能会在没有通知的情况下随 PHP 以后的发布而改变。使用本函数风险自担。

swfgradient() creates a new SWFGradient object.

After you've added the entries to your gradient, you can use the gradient in a shape fill with the swfshape->addfill() method.

SWFGradient has the following methods : swfgradient->addentry().

This simple example will draw a big black-to-white gradient as background, and a reddish disc in its center.

例子 1. swfgradient() example

<?php

  $m
= new SWFMovie();
  
$m->setDimension(320, 240);

  
$s = new SWFShape();

  
// first gradient- black to white
  
$g = new SWFGradient();
  
$g->addEntry(0.0, 0, 0, 0);
  
$g->addEntry(1.0, 0xff, 0xff, 0xff);

  
$f = $s->addFill($g, SWFFILL_LINEAR_GRADIENT);
  
$f->scaleTo(0.01);
  
$f->moveTo(160, 120);
  
$s->setRightFill($f);
  
$s->drawLine(320, 0);
  
$s->drawLine(0, 240);
  
$s->drawLine(-320, 0);
  
$s->drawLine(0, -240);

  
$m->add($s);

  
$s = new SWFShape();

  
// second gradient- radial gradient from red to transparent
  
$g = new SWFGradient();
  
$g->addEntry(0.0, 0xff, 0, 0, 0xff);
  
$g->addEntry(1.0, 0xff, 0, 0, 0);

  
$f = $s->addFill($g, SWFFILL_RADIAL_GRADIENT);
  
$f->scaleTo(0.005);
  
$f->moveTo(160, 120);
  
$s->setRightFill($f);
  
$s->drawLine(320, 0);
  
$s->drawLine(0, 240);
  
$s->drawLine(-320, 0);
  
$s->drawLine(0, -240);

  
$m->add($s);

  
header('Content-type: application/x-shockwave-flash');
  
$m->output();
?>


add a note add a note User Contributed Notes
mabuzzer at hotmail dot com
14-Mar-2002 02:49
Gradient fills are implemented in SWF as a color ramp, mapped onto a square from (-16384, -16384) to (16384, 16384) TWIPS.

The following code creates a movie, displaying a square with a gradient fill, correctly scaled to the size of the shape.

<?php

//Set the scale to TWIPS rather than PIXELS
ming_setscale(1.0);

//Create the movie
$m = new SWFMovie();
$m->setRate(12.0);
$m->setDimension(400,400);
$m->setBackground(0xff, 0xff, 0xff);

//Width and height of rectangle
$sx = 300;
$sy = 300;

//Create rectangle
$s = new SWFShape();

//Gradient file stuff here...
$g = new SWFGradient();
$g->addEntry(0.0, 0x00, 0x00, 0xff);    // Start off Blue
$g->addEntry(1.0, 0xff, 0xff, 0x00);    // Finish off Yellow

// Add gradient fill to the shape
$f = $s->addFill($g);

//Centre the gradient fill against the rectangle
$f->moveTo($sx/2, $sy/2);
//Scale it to the shape, so that the entire gradient fits inside the shape
$f->scaleTo($sx/32768, 1);

// Set the shapes fill to be the added gradient fill
$s->setRightFill($f);

//Draw the rectangle
$s->drawLine($sx, 0);
$s->drawLine(0, $sy);
$s->drawLine(-$sx, 0);
$s->drawLine(0, -$sy);

//Add the shape to the movie
$sh = $m->add($s);
$sh->moveTo(50, 50);

// Output the movie
header("Content-type: application/x-shockwave-flash");
$m->output();

?>

More info about this can be obtained from
http://www.openswf.org/spec/SWFfilereference.html#h4FillTypes