---
name: "SWF::Movie"
section: "3pm"
platform: "linux"
package: "libswf-perl"
version: "1:0.4.4-1.1"
release: "Debian 7 (Wheezy)"
platforms: ["linux"]
url: "https://new.carta.tech/SWF::Movie"
---

# SWF::Movie(3pm)

SWF Movie class

## NAME

SWF::Movie - SWF Movie class

## SYNOPSIS

```
        use SWF::Movie;
        $m = new SWF::Movie();
        $m = SWF::Movie::newSWFMovieWithVersion(8);
```

## DESCRIPTION

SWF::Movie is the root object of your flashfile. It contains all your other objects you want in your movie. Ming supports many Flash4, Flash5 F6,7,8,9.. features.

The SWF::Movie object contains information like the flashversion, the size, the frames per second, the background color. Except that, the SWF::Movie behaves like  a SWF::MovieClip. It only cannot be added to another SWF::Movie or SWF::MovieClip.

Notice: The version of your flashmovie can be set by the object SWF. See SWF for more details.

## METHODS

- $m = new *SWF::Movie()*

  Creates a Movie object.

- $m = newSWFMovieWithVersion(version)

  Creates a Movie object with version value (e.g. 8) set.

- $displayItem=$m-\>add($SWFObject)

  Add an instance of a SWF-object to your current frame. The returnvalue is a SWF::DisplayItem.

  ```
          Some possible SWF-objects are:
          SWF::Action
          SWF::MovieClip
          SWF::Shape
          SWF::Sound
          SWF::Text
          SWF::TextField
          SWF::Bitmap
          SWF::PrebuiltClip
          $m->add($shape); # possible, but not more accessible for us
          $shape_1 = m->add($shape); # good instance
  ```

- $m-\>addExport($block, $name)

  Prepare linkage to Action script code.

  ```
          $m->addExport($mc, 'mc');
          # and later inside action script....:
          $ac = new SWF::Action("_root.attachMovie('mc','mc1',11);");
  ```

- $m-\>*writeExports()*

  Export prepared names to Action script.

- remove($displayItem)

  Removes the given SWF::DisplayItem instance from the current and following frames of the main timeline.

  ```
          $m->remove($shape_i);
  ```

- *nextFrame()*

  Finish a frame of the main timeline. New added objects will be added in the next frame.

  ```
          $m->nextFrame();
  ```

- setNumberOfFrames($frames) =item setFrames($frames)

  Preset the number of frames of the main timeline. n not used frames before finishing the movie will filled with n *nextFrame()* statements. If you inserted more *nextFrame()* commands than you set with *setFrames()* the *setFrames()* will be ignored.

  ```
          $m->setFrames(100);
  ```

- $m-\>setBackground($red,$green,$blue)

  Set the background in red, green, blue values. Possible value are 0..255 or hexvalues 0x0..0xff.

  ```
          $m-setBackground(0xff,0x99,0x00); # orange bg
          $m-setBackground(0,200,255)       # green bg
  ```

  A transparency level isn't available I asume. (In Flash MX/F6?). A transparent background can be set in the HTML-code for Internet Explorer. Please  inform the Authors if that is available for nonIE-browsers.

- $m-\>namedAnchor($label)

  This function adds a named anchor to the movie.

- $m-\>setDimension(x,y)

  Set the dimension in pixel.

  ```
          #ToDo:
          #min: (0.0,0.0)   # ;-)
          #max: (?,?)
          #default: (0.0?,0.0?)
          #Behavior when values <min: ming sets it to min
          #Behavior when values >max: ming sets it to max
          $m->setDimension(200,100);
          $m->setDimension(123.45,67.89);
  ```

- $m-\>setRate(int)

  Set the playing speed in frames/second.

  ```
          #ToDo:
          #min: 0
          #max: ?
          #default: ?
          #Behavior when value <min: ming sets it to min
          #Behavior when value >max: ming sets it to max
          $m->setRate(30);
  ```

- $m-\>*protect()*

  A feature that prevents only flashnewbies from importing your movie into Macromedias Flash authoring tools. It cannot protect your content from being loaded by  other flashmovies, deleting of the protection with a hexeditor or disassembling with tools.

- $m-\>setSoundStream($soundstream, \[$skip\])

  Puts an SWF::SoundStream object as streaming sound into the main timeline. The optional skip parameter describes the time in seconds to be skiped.

  ```
          $m->setSoundStream($soundstream);
  ```

- $m-\>streamMp3($filename)

  Simplifies the *setSoundStream()*. You only need the filename.

  ```
          $m->streamMp3("iloveyou.mp3");
  ```

  Hint: If you want to reuse this sound/mp3 later in this movie, create a reusable SWF::SoundStream object and then put it into *setSoundstream()*.

- $soundinstance = $m-\>startSound($sound)

  Play a prepared SWF::Sound object into the main timeline. Returns an object of SWF::SoundInstance.

  ```
          $sound = new SWF::Sound("loveyoutoo.mp3", SWF_SOUND_MP3_COMPRESSED );
          $si = $m->startSound($sound);
  ```

- $m-\>stopSound($sound)

  Stop playing sound.

- $m-\>labelFrame($string)

  Gives the current frame a label that can be used by actionscript as anchor. Then you don't have to count your *nextFrame()* lines anymore. :-)

  ```
          $m->labelFrame("win");
          #ToDo:
          #max characters of a label???
          #What happen if we put there a big string??
          #Which characters are allowed??
  ```

- $m-\>setScriptLimits($maxRecursion, $timeout)

  Set limits for resource usage, related to action script. Setting timeout will protect your computer from too long loops and stack overflow. So endless scripts like "while (1){};" will be interrupted after timeout seconds.  The default  recursion depth is 265, the default timeout is 15 seconds.

- $m-\>defineScene($offset, $name)

  Define scenes for the movies' main timeline using integer value for frame offset and name of the scene.

- $m-\>setNetworkAccess($flag)

  Sets network / fileaccess policy. If the flag is set to 0 a localy loaded  movie will be unable to access the network but is allowed to access local files. If the flag ist set to 1 a localy loaded movie will be unable to access local files but is allowed to access the network. For SWF \>= 8: default is 0,

- $m-\>addMetadata($xml)

  Adds Metadata to the movie: this function inserts a metadata-tag into the movie. Only one metadata-tag can be set to a movie.  Metadata is specified as an XML string.

- $m-\>assignSymbol($character, $name)

  Assigns a symbolic name for a SWF::Character object. Such classes are available for usage in other SWF files and can be referenced from inside the current movie. To assign a symbol to the root movie use NULL as character value.

- $m-\>setTabIndex($depth, $index)

  Sets tab index for specified depth level.

- $fontchar = $m-\>addFont($font)

  Adds a font to a movie. An object of SWF::FontCharacter class returned.

  ```
          $font = new SWF::Font('Arial.fdb');
          $fch  = $m->addFont($font);
  ```

- $fontchar = $m-\>importFont($file, $name)

  Imports a font from an other SWFFile. An object of SWF::FontCharacter class returned.

  ```
          $fch = $m->importFont('textField.swf', 'Arial337a');
  ```

- $m-\>importCharacter($url, $name)

  Not yet documented (ToDo!)

- $result = $m-\>replace($item, $block)

  This method replaces a displayable character with a new one. Returns 0 on success , -1 else.

  ```
          $dispitem = $movie->add($shape1);
          $movie->nextFrame();
          print $movie->replace($dispitem, $shape2);
          $movie->nextFrame();
  ```

- $written = $m-\>xs\_output(\[$compresslevel\])

  - $written = $m-\>output(\[$compresslevel\])

  Writes the SWF::Movie to stdout. This is normally used for webservers/cgi-scripts.  Don't forget to send the "Content-Type:"-lines before writing out the movie.

  The parameter compresslevel is optional. compresslevel between 0 and 9. Higher values will be interpreted as 9. Values smaller 0 mean no compression. By default the SWF::Movie will be send without compression.  Notice: compression available since Flash MX(Flash 6). Ming does not check this for you if you write flash4 or flash5 movies.

  Unlike *xs\_output()* the *output()* method prepared for using via webservers (but not limited to webservers).

  Both methods return number of bytes written.

- $written = $m-\>save($filename \[, $compresslevel\])

  Method saves the SWF::Movie to a file and returns the number of bytes written. The parameter compresslevel is optional. compresslevel between 0 and 9. Higher values will be interpreted as 9. Values smaller 0  mean no compression. By default the SWF::Movie will be saved without compression.  Notice: compression available since Flash MX(Flash 6). Ming does not check this for you if you write flash4 or flash5 movies.

## EXAMPLE

3 examples: a regular minimal SWF::Movie, one with all methods and a more interesting.

- minimal empty example

  ```
          #!/usr/bin/perl -w
          use SWF::Movie;
          $m = new SWF::Movie();
          $m->nextFrame();
          $m->save("emptyminimal.swf");
  ```

- full empty examples

  ```
          #!/usr/bin/perl -w
          use SWF::Movie;
          $m = new SWF::Movie();
          $m->setVersion(4);
          $m->setBackground(0xff,0xcc,0x0);
          $m->setDimension(200,100);
          $m->protect();
          $m->setRate(30);
          $m->setFrames(10); # ming fills it automatic with frames
          $m->nextFrame()
          $m->save("empty.swf");
  ```

- streaming example

  ```
          #!/usr/bin/perl -w
          use SWF("Shape");
          SWF::setVersion(6);
          $m = new SWF::Movie();
          $m->setBackground(0xff,0xcc,0x0);
          $m->setDimension(200,100);
          $m->setFrames(10);
          $m->streamMp3("forever.mp3");
          $s= new SWF::Shape();
          $s->setLine(40,0xff,0xff,0);
          $s->setRightFill(0xff,0,0);
          $s->drawLine(50,0);
          $s->drawLine(0,20);
          $s->drawLineTo(0,0);
          $s_1= $m->add($s);
          $s_2= $m->add($s);
          $s_1->move(50,40);
          $s_2->move(10,40);
          for($i=1;$i<5;$i++) {
                  $m->nextFrame();
                  $s_2->move(0,10);
          }
          $m->nextFrame();
          print "Content-type: application/x-shockwave-flash\n\n";
          $m->output(9); # with compression level 9 (since flash6)
  ```

## AUTHOR

Soheil Seyfaie (soheil at users.sourceforge.net), Albrecht Kleine and developers of ming.sourceforge.net

## SEE ALSO

SWF, SWF::Action, SWF::Bitmap, SWF::Button, SWF::Constants, SWF::DisplayItem, SWF::Fill,  SWF::Font, SWF::FontCharacter, SWF::Gradient, SWF::Morph, SWF::MovieClip, SWF::Shape,  SWF::PrebuiltClip, SWF::Sound, SWF::SoundStream, SWF::TextField, SWF::Text, SWF::Filter, SWF::Character
