Archive for the ‘LIBRARIES’ Category
AS3 libraries for crypto are pretty robust from the new RAW POWER in the AVM2 virtual machine that runs flash9/as3, cryptography, like compression, is very processor intensive and needs a fair amount of power to be worth the time (usually a balancing mechanism). I am working on a few security apps in AIR and Flash9 for a project and a product so this is the best of what I have found to share. I will be sure to post here when these projects are complete.
There are two that are pretty good as3 kits that have decent support for crypto and hashing, actually as3crypto is quite broad in their support or most common crypto algorithms, even hashing support up to SHA-256 and ciphers 3DES, AES, RC4.
This is not really a comparison just some kits that have tools you might need. as3crypto is definitely the way to go for more heavy ecryption with common ciphers, but if you are just hashing some text as3corelib might work for your project. as3corelib is a more broad toolkit that is made or sponsored by Adobe that has JSON, RSS, support and other tools. It is a great core lib, but not as deep in the encryption area. I am actually using both in the stuff I am working on, as3corelib for some other uses (JSON,RSS) and as3crypto for all encryption and hashing.
The two are:
- as3corelib
- Open source
- Support for hashing algorithms only.
- Browse source
- as3crypto
- Robust, broad encryption and security support
- Open source
- Demo
- Browse source
- Broad support of algorithms
-
-
TLS 1.0 support, exposed through TLSSocket and TLSEngine classes
-
X.509 Certificate support, including parsing, and validation
-
built-in list of common root Certificate Authorities
-
symmetric ciphers: AES, Blowfish, DES, 3DES, XTEA, RC4
-
confidentiality modes: CTR, CBC, CFB, CFB-8, OFB, ECB
-
public key crypto: RSA (encryption, decryption, signing, verifying and key generation)
-
padding: PKCS#1 (type 1 and 2), PKCS#5
-
BigInteger library
-
hashing function: SHA-256, SHA-224, SHA-1, MD5, MD2
-
HMAC support
-
prng: TLSPRF and stream-cypher-based PRNG.
-
minimal ASN-1/DER support for PEM key parsing and X-509 cert parsing
-
Crypto – Shortcut class to access many classes above.
-
Hex, Base64 – Static methods to convert binary data to and from text formats
-
-
As3 Crypto is a cryptography library written in Actionscript 3 that provides several common algorithms, as well as TLS 1.0 support. The library is offered under the BSD license, and include several derivative works from Java, C and javascript sources.
Here’s some numbers from as3Crypto home page that show the speed, note it has not been optimized just yet (since most of this is client side and only one user would be using it this is not an issue – server side is where this can have scale problems from parallel execution but flash is rarely server side if it is too slow, but it is quite fast)
The 'numbers' are in 1000s of bytes per second processed. type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes md2 1.01k 3.64k 15.08k 53.89k 171.76k md5 221.85k 447.32k 739.54k 893.72k 905.82k sha1 82.28k 184.78k 286.76k 336.03k 345.41k sha224 60.84k 125.67k 200.27k 234.28k 247.58k sha256 60.52k 126.30k 199.19k 234.04k 246.01k hmac-md5 48.37k 159.37k 282.87k 295.15k 341.21k hmac-sha1 18.29k 64.82k 165.72k 277.60k 342.52k hmac-sha224 5.75k 24.84k 125.71k 204.35k 256.36k hmac-sha256 15.10k 49.33k 123.71k 206.17k 249.08k rc4 117.24k 381.34k 878.93k 1315.01k 1539.44k xtea-cbc 2.49k 6.48k 12.80k 33.00k 44.48k aes128-cbc 1.61k 4.01k 22.97k 78.55k 205.01k aes192-cbc 1.34k 5.13k 20.91k 69.45k 172.43k aes256-cbc 1.48k 5.63k 18.87k 63.45k 150.39k blowfish-cbc 2.77k 10.81k 42.28k 140.27k 343.05k des-cbc 2.53k 9.73k 35.20k 124.84k 624.88k 3des-cbc 2.50k 9.72k 35.61k 115.21k 253.42kThe library has not been optimized for speed, and those numbers could probably be improved.
They both have minimal or none ASN.1 support which I will need but I can port much of this from my favorite Java/C# crypto kit from the legion of the bouncy castle of which I was happy to find was a substantial base for this kit.
Whatever you do don’t send any type of message from your crypto kits with aes 256 cipher and sha-256 hashing to Iran from the US.
Moses has posted some nicely presented info on Go performance.
So far it looks almost neck and neck with TweenLite in drop dead sprints for fastest performing exhaustive tween kung fu-ing.
Although these are not really for competition it is to mainly show patterns for design for purposes that you need. Where this is a more apples to apples comparison (Go vs TweenLite) as the other kits have other overhead such as filters, utilities, even pathing for AnimationPackage and Tweener. TweenLite solved this by separating out into TweenFilterLite and just making TweenLite for animation (and keeping file size extremely small, virtual machine advantages). There is just no excuse for the F9 Tween class though, what the…
It is one thing to build, another to share, another to present information in a very consumable way and then another to make that whole presentation look really good. Moses, like polygonal labs, throws down some nice demos and information posts.
Go was late to the AS3 Animation kit game after pwning with FuseKit in the AS2 age (especially the creative agency love), I think it was the right time as it was released the TweenLite and TweenBencher performance testing utilities put a focus on performance to see just how many more cycles we could get out of AS3 from an animation kit. When building your own animation kits or contributing to one, these observations from various aims helps in the code design.
I still use Tweener in most production work, and TweenLite when I need really small assets if there are going to be many of them. But, I have started to use Go in a kit I am building that I hope to share more in the future, and used it in a small game. But by the speed of the tests and my own experiments it is pretty clear to see that both TweenLite and Go would be excellent base layers to animation kit architecture and Tweener is a bit more on top of that with the filters and bezier tools that it is really a more complete package with less work to do as your animation gets more complex (colors, saturation, bezier, etc). But if you were looking to build your own animation kit or for micro assets a base like Go or a base kit like TweenLite is the way to go). Some notes from Moses’s tests show that performance and sync are also what starts to fall apart as performance critical mass is reached. Go and Tweener held sync the best.
Side notes:
The TweenLite system was highly performative on all three measures. That system also features a very small filesize footprint, making it a clear choice for banners or other filesize-restrictive projects.
Go & Tweener were the only systems here that synced their animations – others ran out of sync to different degrees which yields less visually favorable results. Actually, it looks kind of neat in the tests! But you don’t want out-of-sync animation in your real-life projects. This effect can be clearly seen using the open-source TweenBencher utility, included in the Go package.

Just recently through the holidays Degrafa has made some great strides as a very cool SVG pathing and designers toolkit for Flex. I have to say some recent Flex apps have really looked good like Picnik and Buzzword but this kit looks to clean up the lack of design and default style-itis that has plagued most common Flex Apps.
This so far looking like a pretty strong kit for bringing the designer pipeline into Flex to provide some really nice looking web styled apps. It has a direct crossover to Silverlight and Path objects that are largely just a series of data created in Expression or exported from Illustrator into XAML. The one benefit of Flex/Flash is it compiles to a very small SWF where with Silverlight you have to package the XAML in a zip and use the downloader object to extract it out. These XAML files and Paths can get massive as I am sure the ones for Degrafa will for Flex but the compile option is nice as it is compressed heavily.
All about Degrafa
Yes the launch includes shiny buttons…

Sphere Sample (right click for source)
Also, it appears it is a way to bridge the pathing and pipeline for flash or Silverlight. At one of the contributors blogs they mention this:
We have lot of interesting features planned for the coming releases. There is also a converter app that will be made available for converting the juicy Degrafa graphics to XAML.
Degrafa has gone live.
Developing…
Wrapper is a cross-browser compliant HTML/CSS rendering engine written in ActionScript that sits on top of your standards compliant HTML page. Wrapper eliminates cross-browser issues and makes integrating ActionScript and HTML/CSS projects possible without needing to compile.
Wrappers strives to answer the most common problems web designers face without forcing them to learn too many new things. Most web sites can be created in HTML or CSS, then when you need to extend Wrapper’s capabilities you can either use JSON to call functions within ActionScript or you can load compiled plug-ins. Wrapper also has built in methods within CSS to load custom fonts, display elements as any shape, and fill them with linear or radial gradient background colors. ActionScript’s event model is also implemented within Wrapper’s HTML. Wrapper’s best features are the ones that you get for free because of how it is set up. It’s like getting all the great features of the Flash Player without needing to deal with compiling and being able to create your content the same way any HTML page would be created. Wrapper is fully accessible to the search engines and integrates well with any back-end technology.
Wrapper is currently released as a fully functional open source beta for Flash Player 9. Wrapper is set up as a pre-compiled plug-in but can easily be integrated into any Flex or AIR applications or even as an ActionScript framework for creation of compiled projects.
Documentation can be found in the wiki and news about this project can be found at http://motionandcolor.com
Examples can be found in the downloads http://code.google.com/p/htmlwrapper/downloads/list
Source is for everything is in svn http://code.google.com/p/htmlwrapper/source
I checked it out and it looks pretty well done, most of the time HTML to Flash or vice versa has to be a semi-controlled environment in terms of the markup. This and FlashML which is only AS2 I am using a partially converted to AS3 are part of my rotation for HTML<–>Flash content challenges for research right now. Usually most CMS in Flash has content loaded into the flash and then an alternate (sometimes similar) representation, here this is trying to merge the two which has it’s challenges.
EDIT: Title dyslexia
Great news! Polygonal Labs has released the long awaited Motor Physics engine. It is now called Motor2.
UPDATE: Now hosted at Google code
Project hosted at code.google.com/p/motor2
License: New BSD License 
After the port of Box2DFlashAS3 appeared the fate of Motor Physics engine was unknown. But with time and just before the stroke of midnight on the final hour of 2007 Michael Baczynski released Motor2 2D physics engine on the world.
This now gives us, count them, FOUR AS3 Physics engines that were released in 2007 in order of release.
Be sure to check the demos of Motor Physics:
To get the source head on over to the blog and in the post it is in the first para.
Currently you can get the source for the preview here.
Polygonal always has such great information and demo write ups the source link gets lost in there. Hopefully this will be at Google code soon or a public SVN. The code looks great and there are optimizations in there but even those are elegant.
With 3 excellent flash as3 3d engines (papervision3d, away3d, sandy), 4 physics engines, lots of great utilities like FZip or ASZip, AlivePDF, Red5, haXe etc etc. 2008 is looking like it will be a great year for performance, optimization and gaming/app platforms on the web like never before seen. I am most looking forward to the coming gaming market for flash, lots of possibilities. With the added competition from Silverlight, much innovation will happen here.
It is great that Motor2, which has a great author and dedicated to performance has joined the physics engine scene, not only that posting on new years eve. Thanks to all that make the flash platform possible of creating excellent new fun and useful tools.
UPDATE: Now hosted at Google code
Project hosted at code.google.com/p/motor2
License: New BSD License
Only a year after release Papervision is getting a major update to 2.0.
Get it while it is hot from the SVN server on google code: http://papervision3d.googlecode.com/svn/trunk/branches/GreatWhite
Papervision3D, launched a year ago, really sparked the AS3 and flash/flex world and inspired every flash guru I know into working on this code. There have been some great tools made and some fwa’s won but it is only the beginning.
I am mostly looking forward to performance enhancements, ascollada integration, culling and Andy Zupko’s 2d bitmap effects on 3d.
- Faster!
- ShadeMaterials
- Shaders
- ASCollada (animation support)
- Frustrum Culling
- Multiple Viewports (3d editor anyone?)
- Render to Scene
- and more!
SVN server and branch:
We do indeed like to ride the racecars!
Found via Zeh, this great bulk loading kit for AS3 from Arthur Debert.
AS3 Loaders are very useful, but when you have large projects there is always a pause and focus on loading scenarios and architecture needed for your loading scenarios, sometimes this can literally eat days and entirely change performance with wrong moves. BulkLoader is a well written kit from Authur Debert that makes loading scenarios or using BulkLoader as a base to your loading situations a great pluggable piece of code that has many excellent features.
Some of the calls like BulkLoader.getLoader(“main-site”).getContent(“bg”), are also very similar to Silverlight’s downloader object that can be queued like this. All in all a kit that is very useful that I have already put to work and will help teams standardize on bulk loading for those killer flash apps.
- BulkLoader at Google Code
- Credits
- DeveloperGuide
- GettingStarted
- ProjectStatus
Creating a BulkLoader instance
// creates a BulkLoader instance with a name of "main-site", that can be used to retrieve items without having a reference to this instance var loader : BulkLoader = new BulkLoader("main-site");
Add urls to load
// simplest case: loader.add("logo.png"); // use an "id" so the item can be retrieved later without a reference to the url loader.add("background.jpg", {id:"bg"}); // since the url by itself can't tell us what the filetype is, use the type property to let BulkLoader know what to do: loader.add("/some-web-services?size=Large", {type:"image"}); // add an item that should be loaded first (higher priority): loader.add("/data/config.xml", {priority:20}); // add a max try number (defaults to 3) loader.add("/unreliable-web-services.xml", {maxTries:6}); // you can also use a URLRequest object , this will load from a POST request var postRequest : URLRequest = new URLRequest("/save-prefs.php"); postRequest.method = "POST"; var postData : URLVariables = new URLVariables(myPostDataObject ); postRequest.data = postData; loader.add(postRequest, {"id":"settings"}); // of course, all options can be combined: loader.add("the-sound-webservices?name=maintrack", {"id":"soundtrack", type:"sound", maxTries:1, priority:100});
Listening for events
// simplest case: loader.add("logo.png"); // use an "id" so the item can be retrieved later without a reference to the url loader.add("background.jpg", {id:"bg"}); // since the url by itself can't tell us what the filetype is, use the type property to let BulkLoader know what to do: loader.add("/some-web-services?size=Large", {type:"image"}); // add an item that should be loaded first (higher priority): loader.add("/data/config.xml", {priority:20}); // add a max trie number (defaults to 3) loader.add("/unreliable-web-services.xml", {maxTries:6}); // you can also use a URLRequest object , this will load from a POST request var postRequest : URLRequest = new URLRequest("/save-prefs.php"); postRequest.method = "POST"; var postData : URLVariables = new URLVariables(myPostDataObject ); postRequest.data = postData; loader.add(postRequest, {"id":"settings"}); // of course, all options can be combined: loader.add("the-sound-webservices?name=maintrack", {"id":"soundtrack", type:"sound", maxTries:1, priority:100}); Listening for events: // attaching events to all items: // this will fire once all items have been loaded loader.addEventListener(BulkLoader.COMPLETE, onAllLoaded); // this will fire on progress for any item // the event , BulkProgress is a subclass of ProgressEvent (with extra information) loader.addEventListener(BulkLoader.PROGRESS, onAllProgress); // this will fire if any item fails to load: // the event is BulkErrorEvent and holds an array (errors) with all failed LoadingItem instances loader.addEventListener(BulkLoader.ERROR, onAllError); // you can also listen to events in individual items // this will fire as soon as the item registred with the id of "bg" is done loading (even if there are other items to load) loader.get("bg").addEventListener(Event.COMPLETE,onBackgroundLoaded) // this will only trigged if the config.xml loading fails: loader.get("data/config.xml").addEventListener(BulkLoader.ERROR, onXMLFailed);
Starting the loading operation
BulkLoader will only begin loading once you call the start method:
loader.start();
Retrieving content
var theBgBitmap : Bitmap = loader.getContent("bg") as Bitmap; // you don't need to keep a reference to the loader intance, you can get it by name: var theBgBitmap : Bitmap = BulkLoader.getLoader("main-site").getContent("bg") as Bitmap; // you can also use the conviniece methods to get a typed object: var theBgBitmap : Bitmap = loader.getBitmap("bg"); // grab a BitmapData directly: var theBgBitmap : Bitmap = loader.getBitmapData("bg");
Other convenience functions: getXML, getText, getNetStream, getSound, getMovieClip, getNetStreamMetaData.
You can retrieve an item using it’s id, it’s url as a String or as the URLRequest object (if the item was created with an URLRequest).
Arthur also has experience on Tweener so making simplified calls and minimalist code to make a library successful is very clear in the notes/goals on the project and the resulting code:
BulkLoader is a minimal library written in Actionscript 3 (AS3) that aims to make loading and managing complex loading requirements easier and faster. BulkLoader takes a more dynamic, less architecture heavy aproach. Few imports and making heavy use of AS3′s dynamic capabilities, BulkLoader has a one-liner feel that doesn’t get your way.
BulkLoader tries to hide the complexity of loading many data types in AS3, providing a unified interface for loading, accessing and events notification for different types of content.
This library is licensed under an open source MIT license.
Features:
- Connection pooling.
- Unified interface for different loading types.
- Unified progress notification.
- Events for individual items and as groups.
- Priority
- Stop and resuming individually as well as in bulk.
- Cache managing.
- Statistics about loading (latency, speed, average speed).
- Multiple kinds on progress indication: ratio (items loaded / items to load), bytes , and weighted percentage.
- Multiple number of retries.
- Configurable logging.
Design goals:
- Minimal imports.
- Few method to learn.
- Dynamic nature: items can be added by specifying a url as a String or a URLRequest .
- Items can be assigned an identifier key to be used on retrieval.
- Only one class to learn / use.
BulkLoader tries to gracefully handle progress notification in these use cases:
- Few connections to open: bytes total can be used instantly.
- Many connections opened: progress by ratio
- Many connections opened for data of widely varying sizes: progress by weight.
This is quite a contribution to the flash community and is a perfect candidate for the base of your loading assets projects and scenarios. Thanks Arthur!
Another great new 2D physics engine for AS3 has been released called Box2dFlashAS3 that is based on the excellent kit Box2D for C++. It has been a busy year for physics engines in AS3. FOAM was released this month, APE, the highly anticipated Motor Physics from polygonal labs and plenty more still I am sure.
The Box2dFlashAS3 version has some great demos available on the site that show, use the arrow keys to move to the different demos highlighted here.
- bridge

- ragdolls

- compound shapes

- rube goldberg / domino / tank tracks etc

- stacked boxes

- slider crank / piston

- pulleys

- gears

Box2DFlashAS3 is an open source port of Erin Catto’s powerful c++ physics library Box2D. Cycle through the demos to see some of the features.
Full source code for the engine and examples can be downloaded from the project’s sourceforge page found Here.
This kit is nice because it mimics Box2D for the crossover and ability of developers to use it in C++ and Flash AS3 moreso than other kits. It looks good and performs well except for a memory or FPS pause I get intermittently. The demos are already inspiring many uses of the features highlighted for games and effects.
Sandy 3.0 was released today. To go along with that a RedSandy (Red5 and sandy demo) has also been released. Sandy is the original 3d flash engine that was around before Papervision3D and Away3D and all the others. Sandy3d is an excellent library and it has many features that others do not have well particularly in the easier control of objects and importing all types of files such as ASE, WRL and 3ds in addition to COLLADA which other 3d engines like PV3d and Away3d support although it has been slower in the past 3.0 may change that.
Sandy 3D engine main features are :
-
Flash player 7 to 9 compatibility.
-
Both MTASC and Macromedia compilers compliant for AS2 and Flash CS3 and FlexBuilder for AS3 versions.
-
Several 3D primitives, allowing fast and parameterized object creation without any 3D modelisation knowledge.
-
Advanced and easy object management allowing some fantastic possibilities during your creations (scaling, rotation, translation, tween, etc.)
-
Advanced camera management ( rotation, motion on linear or bezier-curve path, movements, etc.)
-
Complex object loading thanks to the .ASE and .WRL files parser , but also Collada and 3DS files for AS3, (files generated by several 3D object modeling packages such as 3D Studio Max or Blender)
-
Material system to easily change your objects appearance. Several material are available allowing to create transparent faces, bitmap texture and video texture as webcam video stream.
-
Managment of Flash filters bringing some very nice visual effects
Red5 is the best multi-user media server out there right now and it is built with Java.
The cool and probably most interesting part is Sandy combined with Red5 to create multi-user environments in 3d for flash. There have been experiments with this and many attempts at this and is being done but an open source kit that does this is very helpful and these are two great flash toolkits in Sandy and Red5.
- Download Sandy
- Sandy 3.0 announcement post
- Introduction to the RedSandy project and SVN
- Installing the Red5 ‘Engine’ application
- Security Considerations
- Sandy 3.0 Technotes
Get your game on!
Getting started video with Sandy 3.0 with a wise robot
[youtube=http://www.youtube.com/watch?v=vPz4VwIlrQg]
Drew Cummin’s FOAM is a great flash as3 2d physics package that can be integrated quickly and get started with realistic physics in 2d flash apps and games. I have been playing with this since FOAM’s release last week and putting together some tests to show, comparing with APE and really looking forward to polygonal labs Motor Physics to add there.
Three excellent physics engines (FOAM, APE and Motor Physics) for flash in AS3 already. Basically at flash9 player/avm2 market saturation (it is now available to develop on in over 94% of market) is showing the power of the ES4/Javascript2 based Actionscript3 language and how it is inspiring developers to new levels of interest/inspiration. Then again haXe can target them all but I digress.
FOAM was recently released but the author Drew Cummins is showing very good support for the toolkit and released a plethora of goodins to support this great kit, bug fixes, samples, docs and some realistic physics demos as well as in depth walkthrough of creating a force generator and comparison of the Euler and RK4 equations used in that process and their differences (Euler being less correct due to the factors of the platform and intervals and environment, RK4 more correct but more expensive to run)
If you are developing realistic physics in flash games or apps this toolkit is a great source of inspiration.
- Demo showing semi-realistic physics and the results of the Euler and RK4 Solver in an orbit scenario
- Excellent post describing the IForceGenerator interface to make a GravitationalForceGenerator class used in the demo
- Code sample orbit of realistic physics (AS3)
- Code sample of GravitationalForceGenerator class (AS3)
- Euler class in FOAM
- RK4 class in FOAM
- FOAM AS3 2d physics engine source at Google Code
- Perpetual Fall
- Zero G Toy Chest








