Giter VIP home page Giter VIP logo

swf's Introduction

MIT License Haxelib Version

SWF

Provides runtime or compile-time parsing and processing of SWF/SWC assets for use with OpenFL. SWF content can then be used for design or (beta) animation in projects deployed to desktop, web, mobile and console targets in both web and native technologies.

Use of this library for static design content has a track record in production. Use of this library for animation should be considered beta and may not be optimized for performance. Contributions to improve performance are welcome!

There are three primary code paths within the library:

  1. SWF

Type "swf" provides full parsing of the SWF/SWC format (based upon the original as3swf library by Claus Wahlers). This code is optimized primarily for completeness and accuracy rather than performance. Once a SWF has been fully parsed, it can be exported into a new runtime-optimized format (SWFLite, Animate) or there is a rudimentary implemention available for using the parsed SWF content directly at runtime. Those interested in improving this code path may be interested in looking at https://github.com/openfl/openfl-player as a start to testing and improving runtime SWF loading and playback.

  1. SWFLite

Type "swflite" is an older exporter format, previously integrated within OpenFL. The code exists in this library primarily for historical reasons. After parsing the SWF content using the "swf" code path, a new format was generated with the help of the Haxe serializer. Despite runtime file-size and performance improvements based on the format, the reliance on Haxe serialization had downsides to backward compatibility.

  1. Animate

Type "animate" is the latest exporter format, and the default for all targets. It combines the benefits of the "swflite" format while writing to JSON and compressing all assets into a single ZIP file. It can be iteratively improved while maintaining backward compatibility. The Macromedia SWF format also has these benefits, however it is optimized for a runtime different from modern web browsers. For example, images in a Macromedia SWF file may have premultiplied alpha applied to bitmaps already. There is no quick way to render this properly using HTML5 canvas. The Animate library format offers an opportunity for to pre-process SWF content into a flexible format optimized for modern production-use.

This library can be called automatically by the OpenFL/Lime command-line tools to process <library /> tags, or it can be used on the command-line to process SWF files into Animate ZIP files.

Usage

First, make sure that <haxelib name="swf" /> has been added to your project.

Then, you can add <library path="to/your.swf" preload="true" /> to include a SWF library. This will be available at runtime using the file name of the SWF (minus the ".swf") or you can add id="my-unique-id" to specify a custom name.

There is a (beta) option for generate="true" to generate Haxe classes for each "Export for ActionScript" type in the SWF file. The preload is also optional, but is recommended to simplify use.

You can create an "Export for ActionScript" clip from a SWF like this:

var clip = Assets.getMovieClip("my-swf:MyMovieClipName");

If you would prefer to create the whole timeline, use an empty clip name:

var timeline = Assets.getMovieClip("my-swf:");

If you use the 'generate' option, you would instead create a new instance like this:

var clip = new MyMovieClipName();

You can also process files from the command-line, and load them later:

haxelib run swf process
haxelib run swf process path/to/swfs
haxelib run swf process test.swf
haxelib run swf process test.swf path/to/test.zip
haxelib run swf process test.swf output/path

For example:

haxelib run swf process test.swf

This will generate a "test.zip" file which can be loaded at runtime later:

import swf.exporters.animate.AnimateLibrary;
import openfl.utils.Assets;

...

AnimateLibrary.loadFromFile("path/to/test.zip").onComplete(function(library)
{
    var clip = library.getMovieClip("MyMovieClipName");
    // or
    Assets.registerLibrary("my-swf", library);
    var clip = Assets.getMovieClip("my-swf:MyMovieClipName");
});

Installation

You can easily install SWF using haxelib:

haxelib install swf

To add it to a Lime or OpenFL project, add this to your project file:

<haxelib name="swf" />

Development Builds

Clone the SWF repository:

git clone https://github.com/openfl/swf

Tell haxelib where your development copy of SWF is installed:

haxelib dev swf swf

Rebuild the SWF library tools:

```bash
openfl rebuild tools
# or
cd swf
haxe rebuild.hxml
```

To return to release builds:

haxelib dev swf

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.