文字

The SWFMovie class

(PHP 5 <= 5.3.0, PECL ming SVN)

简介

SWFMovie is a movie object representing an SWF movie.

类摘要

SWFMovie {
mixed add ( object $instance )
void addExport ( SWFCharacter $char , string $name )
mixed addFont ( SWFFont $font )
__construct ([ int $version ] )
SWFSprite importChar ( string $libswf , string $name )
SWFFontChar importFont ( string $libswf , string $name )
void labelFrame ( string $label )
void nextFrame ( void )
int output ([ int $compression ] )
void remove ( object $instance )
int save ( string $filename [, int $compression = -1 ] )
int saveToFile ( resource $x [, int $compression = -1 ] )
void setbackground ( int $red , int $green , int $blue )
void setDimension ( float $width , float $height )
void setFrames ( int $number )
void setRate ( float $rate )
SWFSoundInstance startSound ( SWFSound $sound )
void stopSound ( SWFSound $sound )
int streamMP3 ( mixed $mp3file [, float $skip = 0 ] )
void writeExports ( void )
}

Table of Contents

  • SWFMovie::add — Adds any type of data to a movie
  • SWFMovie::addExport — 说明
  • SWFMovie::addFont — 说明
  • SWFMovie::__construct — Creates a new movie object, representing an SWF version 4 movie
  • SWFMovie::importChar — 说明
  • SWFMovie::importFont — 说明
  • SWFMovie::labelFrame — Labels a frame
  • SWFMovie::nextFrame — Moves to the next frame of the animation
  • SWFMovie::output — Dumps your lovingly prepared movie out
  • SWFMovie::remove — Removes the object instance from the display list
  • SWFMovie::save — Saves the SWF movie in a file
  • SWFMovie::saveToFile — 说明
  • SWFMovie::setbackground — Sets the background color
  • SWFMovie::setDimension — Sets the movie's width and height
  • SWFMovie::setFrames — Sets the total number of frames in the animation
  • SWFMovie::setRate — Sets the animation's frame rate
  • SWFMovie::startSound — 说明
  • SWFMovie::stopSound — 说明
  • SWFMovie::streamMP3 — Streams a MP3 file
  • SWFMovie::writeExports — 说明

用户评论:

[#1] mark omohundro, ajamyajax dot com [2009-04-06 08:47:53]

<?php
// php ming 'challenge response' style text to graphics routine --
// (example only; any use for input validation is up to you, however
//  this image can be displayed on text pages in an html iframe)

  
$f = new SWFFont("Bitstream Vera Serif.fdb");

  
$m = new SWFMovie();
  
$m->setDimension(500150);
  
$m->setBackground(255255255);

  for (
$r=0$r 6$r++) {
    
// random char selected from range: '2-9', 'A-Z', 'a-z'
    
switch (rand(0,2)) {
      case 
0:
        
$c chr(rand(50,57));
        break;
      case 
1:
        
$c chr(rand(65,90));
        break;
      case 
2:
        
$c chr(rand(97,122));
        break;
    }
    
$p convertchar($c);
    
$i $m->add($p);
  }
  
$i->setDepth(1);

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


<?php
  
function convertchar($txt) {
    global 
$f;
    static 
$x=10$y=5;

    
$s = new SWFShape();
    
$s->setLine(rand(0,1),125,125,200); // (line weight, r, g, b)
    
$s->drawLine(rand(15,25),0);

    
$t = new SWFText();
    
$t->setFont($f);
    
$t->setColor(1515195);
    
$t->setHeight(40);
    
$t->addString($txt);

    
$p = new SWFSprite();
    
$is $p->add($s);

    
$it $p->add($t);

    
$is->move($x,$y);  // lines thru char
    
$it->move($x,$y+8);
    
$x+=75;

    
// all chars adjusted in a slightly random manner
    
$rs rand(-1,1);
    for (
$n=0$n 3$n++) {
      
$it->scaleTo($n1);
      
$is->scaleTo($n1);

      
$it->rotate($rs);
      
$is->rotate($rs);

      
$it->skewx(-$rs/10);
      
$is->skewx(-$rs/10);

      
$it->skewy($rs/10);
      
$is->skewy($rs/10);
      
$p->nextframe();
    }

    
$p->add(new SWFAction("stop();"));
    
$p->nextFrame();
    return 
$p;
  }
?>

[#2] mark omohundro, ajamyajax dot com [2009-02-27 06:33:28]

<?php
// php ming swf flash movie example #2 --
// this routine displays several wipe/fade transitional effects

  
$f = new SWFFont("Bitstream Vera Serif.fdb");

  
$m = new SWFMovie();
  
$m->setDimension(640480);
  
$m->setBackground(0255153);
  
$m->setRate(9);

  
$p movieclip("First..."025525510050257);
  
$i $m->add($p);
  
$p movieclip("Second..."1020102100170185);
  
$i $m->add($p);
  
$p movieclip("Third..."255051100290306);
  
$i $m->add($p);

//  $m->save("wfeffect.swf");

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


<?php
  
function movieclip($txt$r$g$b$x$y$sv$mv) {
    global 
$f;

    
$s = new SWFShape();
    
$s->setLine(1,0,0,255); // (line weight, r, g, b)
    
$s->setRightFill(255,255,0);
    
$s->drawLine(170,0);
    
$s->drawLine(0,60);
    
$s->drawLine(-170,0);
    
$s->drawLine(0,-60);

    
$t = new SWFText();
    
$t->setFont($f);
    
$t->setColor($r$g$b);
    
$t->setHeight(17);
    
$t->addString($txt);

    
$p = new SWFSprite();
    
$is $p->add($s);
    
// works with images also:
//    $is = $p->add(new SWFBitMap(fopen("/images/yourbmp.jpg", "rb")));

    
$it $p->add($t);

    
$is->moveTo($x$y);
    
$it->moveTo($x+10$y+20);

    
// adjust movement left with a compensating move
    // right ($i->move()), to change look of this effect:
    // note: setting the scaleTo() $y parameter to 0 didn't help(?)
    // fixed in later versions?  only tested with Ming 0.3beta1.
    
$scaleLeftValue $sv;
    
$moveRightValue $scaleLeftValue/$mv;

    for (
$n=1$n $scaleLeftValue$n++) {
      
$is->scaleTo(1-($n/$scaleLeftValue), 1);
      
$it->scaleTo(1-($n/$scaleLeftValue), 1);
      
$is->move($moveRightValue0);

      
// fade text color to add to effect:
      
if ($n <= 10) {
        
$it->addColor(10*$n10*$n10*$n);
      }
      
// try to keep text in bounds
      
if ($n $scaleLeftValue 2) {
        
$it->move($moveRightValue0);
      }
      
$p->nextframe();
    }
    
$p->remove($is);  // remove() causes item to disappear
    
$p->remove($it);  // which is exactly what we want here
    
$p->nextFrame();

    
$p->add(new SWFAction("stop();"));
    
$p->nextFrame();
    return 
$p;
  }
?>

[#3] mark omohundro, ajamyajax dot com [2009-02-26 07:54:35]

<?php
// php ming swf flash movie example --
// this routine simply adds a shadow, text, and movement to a rectangle shape.
// for a dissolve effect using swfmorph, see this add'l note:
// http://www.php.net/manual/en/function.swfmorph.construct.php

$lineweight 3;
$linered 102;
$linegreen 102;
$lineblue 255;

$fillred 204;
$fillgreen 204;
$fillblue 255;
$rectlinelen 200;

$shadowred 153;
$shadowgreen 153;
$shadowblue 153;
$shadowoffset 3;

$x 100;
$y 150;

$m = new SWFMovie();
$m->setDimension(640,480);
$m->setBackground(235,235,235);
$m->setRate(65);

$is $m->add(shadowrectShape(true));
$i $m->add(rectShape(true));

$text "Shadow Play...";
$its $m->add(textField($text15$shadowred$shadowgreen$shadowblue));
$it $m->add(textField($text15$linered-25$linegreen$lineblue));

$is->moveTo($x+$shadowoffset,$y+$shadowoffset);
$i->moveTo($x,$y);  // starting x,y for rectangle
$its->moveTo($x+15+1,$y+15+1);  // only a minimal shadow for text...
$it->moveTo($x+15,$y+15);

for (
$n=0$n 75$n++) {
  
$is->move(2.050.05);  // rectangle's shadow, lengthens as it moves
  
$i->move(2,0);  // original rectangle
  
$its->move(20.01);  // text shadow
  
$it->move(2,0);  // text
  
$m->nextFrame();
}

$m->add(new SWFAction("stop();"));
$m->nextFrame();

// $m->save("shadow.swf");

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


<?php
function rectShape($addfill) {
  global 
$lineweight$linered$linegreen$lineblue;
  global 
$fillred$fillgreen$fillblue$rectlinelen;

  
$s = new SWFShape();
  
$s->setLine($lineweight$linered$linegreen$lineblue);
  if (
$addfill) {
    
$s->setRightFill($s->addFill($fillred$fillgreen$fillblue));
  }
  
$s->drawLine($rectlinelen0);
  
$s->drawLine(0$rectlinelen);
  
$s->drawLine(-$rectlinelen0);
  
$s->drawLine(0, -$rectlinelen);
  return 
$s;
}

function 
shadowrectShape($addfill) {
  global 
$lineweight$rectlinelen;
  global 
$shadowoffset$shadowred$shadowgreen$shadowblue;

  
$s = new SWFShape();
  
$s->setLine($lineweight$shadowred$shadowgreen$shadowblue);
  if (
$addfill) {
    
$s->setRightFill($s->addFill($shadowred$shadowgreen$shadowblue));
  }
  
$s->drawLine($rectlinelen+$shadowoffset0);
  
$s->drawLine(0$rectlinelen+$shadowoffset);
  
$s->drawLine(-$rectlinelen-$shadowoffset0);
  
$s->drawLine(0, -$rectlinelen-$shadowoffset);
  return 
$s;
}

function 
textField($strtext$intheight$textred$textgreen$textblue) {
  
$t = new SWFTextField();
  
$t->setFont(new SWFFont('Default'));
// or try this instead:
//  $t = new SWFText();
//  $f = new SWFFont("Bitstream Vera Sans.fdb");
//  $t->setFont($f);
  
$t->setColor($textred$textgreen$textblue);
  
$t->addString($strtext);
  
$t->setHeight($intheight);
  return 
$t;
}
?>

[#4] askypcom at gmail dot com [2009-01-12 19:16:53]

<?php 
$myShape1
=new SWFShape(); 
$myShape1->setLine(5,0,0,255); 
$myShape1->setRightFill(255,255,0); 
$myShape1->movePen(-30,-30); 
$myShape1->drawLine(60,0); 
$myShape1->drawLine(0,60); 
$myShape1->drawLine(-60,0); 
$myShape1->drawLine(0,-60); 
$myMovie=new SWFMovie(); 
$myMovie->setDimension(460,80); 
$myMovie->setBackground(255,0,0); 
$movingSquare=$myMovie->add($myShape1); 
$movingSquare->moveTo(40,40); 
$myMovie->nextFrame(); 
$movingSquare->move(40,0); 
$myMovie->nextFrame(); 
$movingSquare->move(40,0); 
$myMovie->nextFrame(); 
$movingSquare->move(40,0); 
$myMovie->nextFrame(); 
$movingSquare->move(40,0); 
$myMovie->nextFrame(); 
$movingSquare->move(40,0); 
$myMovie->nextFrame(); 
$movingSquare->move(40,0); 
$myMovie->nextFrame(); 
$movingSquare->move(40,0); 
$myMovie->nextFrame(); 
$movingSquare->move(40,0); 
$myMovie->nextFrame(); 
$movingSquare->move(40,0); 
$myMovie->nextFrame(); 
$movingSquare->move(40,0); 
$myMovie->nextFrame(); 
$movingSquare->move(40,0); 
$myMovie->nextFrame(); 
$movingSquare->move(40,0); 
$myMovie->save("lesson.swf"); 
?>
 

Sachin Akhani
http://www.askyp.com

上一篇: 下一篇: