©
このドキュメントでは、 php中国語ネットマニュアル リリース
(PHP 5 <= 5.3.0, PECL ming SVN)
SWFShape::addFill — Adds a solid fill to the shape
$red
, int $green
, int $blue
[, int $alpha
= 255
] )$bitmap
[, int $flags
] )$gradient
[, int $flags
] )此函数是实验性的。此函数的表象,包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。
SWFShape::addFill() adds a solid fill to the shape's list of fill styles. SWFShape::addFill() accepts three different types of arguments.
red
, green
, blue
is a color (RGB mode).
The bitmap
argument is an SWFBitmap() object.
The flags
argument can be one
of the following values: SWFFILL_CLIPPED_BITMAP, SWFFILL_TILED_BITMAP,
SWFFILL_LINEAR_GRADIENT or SWFFILL_RADIAL_GRADIENT. Default is
SWFFILL_TILED_BITMAP for SWFBitmap and SWFFILL_LINEAR_GRADIENT for
SWFGradient.
The gradient
argument is an SWFGradient()
object. The flags argument can be one of the following values :
SWFFILL_RADIAL_GRADIENT or SWFFILL_LINEAR_GRADIENT. Default is
SWFFILL_LINEAR_GRADIENT. I'm sure about this one. Really.
SWFShape::addFill() returns an SWFFill() object for use with the SWFShape::setLeftFill() and SWFShape::setRightFill() functions described below.
This simple example will draw a frame on a bitmap. Ah, here's another buglet in the flash player- it doesn't seem to care about the second shape's bitmap's transformation in a morph. According to spec, the bitmap should stretch along with the shape in this example..
Example #1 SWFShape::addFill() example
<?php
$p = new SWFMorph ();
$b = new SWFBitmap ( file_get_contents ( "alphafill.jpg" ));
// use your own bitmap
$width = $b -> getWidth ();
$height = $b -> getHeight ();
$s = $p -> getShape1 ();
$f = $s -> addFill ( $b , SWFFILL_TILED_BITMAP );
$f -> moveTo (- $width / 2 , - $height / 4 );
$f -> scaleTo ( 1.0 , 0.5 );
$s -> setLeftFill ( $f );
$s -> movePenTo (- $width / 2 , - $height / 4 );
$s -> drawLine ( $width , 0 );
$s -> drawLine ( 0 , $height / 2 );
$s -> drawLine (- $width , 0 );
$s -> drawLine ( 0 , - $height / 2 );
$s = $p -> getShape2 ();
$f = $s -> addFill ( $b , SWFFILL_TILED_BITMAP );
// these two have no effect!
$f -> moveTo (- $width / 4 , - $height / 2 );
$f -> scaleTo ( 0.5 , 1.0 );
$s -> setLeftFill ( $f );
$s -> movePenTo (- $width / 4 , - $height / 2 );
$s -> drawLine ( $width / 2 , 0 );
$s -> drawLine ( 0 , $height );
$s -> drawLine (- $width / 2 , 0 );
$s -> drawLine ( 0 , - $height );
$m = new SWFMovie ();
$m -> setDimension ( $width , $height );
$i = $m -> add ( $p );
$i -> moveTo ( $width / 2 , $height / 2 );
for ( $n = 0 ; $n < 1.001 ; $n += 0.03 ) {
$i -> setRatio ( $n );
$m -> nextFrame ();
}
header ( 'Content-type: application/x-shockwave-flash' );
$m -> output ();
?>