MegaZine3 is a so-called page flip engine. It allows the definition of Flash content that behaves like a book or magazine via XML files. The engine is open source, the code can be obtained from the SVN repository (information on Subversion).
Fundamental features are:
- Plugin architecture, allowing easy extension of the engine, and a slim core.
- Element system, allowing the definition of any number elements per page, not just one image or SWF. It is also possible to write custom elements. Elements include images (graphics and SWFs), video, text and more.
- Dynamic content, defined using XML files, which can be validated using a DTD (doctype definition).
- Easily configurable GUI using the ASUL framework, an XML based GUI definition framework.
Further core functionality:
- Spread pages.
- Turning multiple pages at once, making navigation much faster and comfortable.
- Dynamic page loading/unloading, to keep a constant memory footprint.
- Easy localization of contents.
- Right to left reading mode.
- Intuitive XML structure: one Book containing any number of Chapters, each containing any number of Pages (or Spreadpages).
- Prioritized loading: loading pages the user sees first, loading "smaller" elements first (e.g. images before videos).
- Clean, object-orientated coding style. Also, the code is well documented.
Most functionality is provided through plugins. The open and clean API allows an easy start to developing your own plugins. Some exemplary plugins:
- NavigationBar, adds a navigation bar to the book which can be used to navigate through the book.
- Gallery provides an inbuilt gallery functionality (clicking on elements opens a gallery)
- Links allows linking elements (e.g. to URLs or mail addresses).
- Anchors adds further functionality to the links plugins, allowing to link to other (optionally named) pages.
See the plugins category for even more plugins.
The project started out as a fun thing in the middle of 2007. Initially it was written in ActionScript 2, with hard-core timeline scripting, but already with XML based content. As time went on bugs were fixed and features were added, but all in all there was no real publicity involved. This went on until version 1.3 (there were 11 releases in total), which was released in September.
After that the step to ActionScript 3 was made, changing to a completely class driven programming style. Although previous experiences helped, the code itself was completely rewritten from scratch. A big part was done when other projects, university and work, required too much time for the development to go on. But after a few months things got going again and - almost exactly one year after the original first release - version 1.0 of MegaZine3 was released (yeah, the three was probably inspired by the one in ActionScript 3, but frankly, I'm not sure anymore). The further developments can be tracked via the version history of the 1.x version. Sadly, there had been two consecutive server crashes around the time of the release of version 1.37, only leaving the current code base on a local machine (at least!), so all previous revisions are gone forever... this is why the tags start at 1.38.
Now that the engine had grown quite a lot more than originally intended it was getting very hard to get a quick overview of how things worked internally, and changing things or adding new features was beginning to grow a pain. Enter the new major version of the engine, the 2.x branch. It was a major rewrite of some of the functionality, and especially a lot of refactoring. The result is a plugin driven engine that can be easily extended, but is very slim on its own. Furthermore GUI components can be modified a lot easier, thanks to a simple XML based GUI definition framework named Category:ASUL.
The core "team" was, up to some months ago, Florian Nücke. He's (for now) still the only developer working on the actual core and the basic plugins, which is the reason why releases can take their time. Hans Nücke has taken on the business side of things, so if you're planning on commercial use, have a look at our business site and contact him. For technical questions, please use the forum, we try to answer questions whenever we can.