Archive for the ‘TOOLS’ Category
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]
Dojo Toolkit, a robust javascript library similar to my favorite js kit mootools, recently update and
added some support for Silverlight effects. This is one really cool aspect of Silverlight in that it allows you to script/code it in many languages in the DLR (Dynamic Language Runtime) including ironpython, C#, IronRuby, javascript and others. Where as with Flash you only have Actionscript3 available.
Check out the Silverlight demos here:
| butterfly.html | 20-Aug-2007 18:19 | 33K | |
| circles.html | 20-Aug-2007 18:19 | 4.0K | |
| clock.html | 20-Aug-2007 18:19 | 7.3K | |
| lion.html | 20-Aug-2007 18:19 | 22K | |
| tiger.html | 20-Aug-2007 18:19 | 100K |
DojoX
- high quality implementations of previously experimental features: gfx (portable 2D drawing), data wires, offline, storage, cometd, etc.
- dojox.gfx now includes Sliverlight support
- many more features and improvements than there’s room for here.
Dijit
- unified look and feel for all widgets
- ambitious a11y and i18n features in every Dijit widget
- a mature CSS-driven theme system with multiple, high-quality themes
- huge improvements in system performance
- data-bound widgets
- Declarations for lightweight widget writing
- a new page parser that allows instances of any class, not just widgets
- no magic
Core
- reduced API surface area (easier to remember and use)
- dojo.query() always available, returns real arrays
- from-scratch high-performance DnD system
- Base (dojo.js) is 25K on the wire (gzipped)
- dojo.data APIs finalized
- new build system
- new test harness for both CLI and browser use
- dojo.behavior now marked stable and based on dojo.query
- excellent animation APIs with Color animations in Base (always available)
- all the features you’ve come to count on from Dojo (RPC, JSON-P, JSON, i18n, formatting utilities, etc.)
[ source ]
When debugging flash sometimes you need to either debug in browser or check a past version of the Flash player or the new beta player to see how things are looking. Here is a list of some tools beyond the included debugging IDEs FlashCS3 and Flex2 that are helpful to making your flash projects more bulletproof.
- Firefox Flash Version Switcher from Sephiroth
Find out if your code is just messed in the latest version or an older version of the flash player. This has links to the older versions of the Flash player from Adobe that you are interesting in testing. - Xray Flash/Flex Debugging Kit by John Grden XRay is a flash/flex debugger
for real-time debugging and spying on your code. It is 16KB for the connector that you add to your files but it is debugging in style. If you have any issues with a live app or to help during testing Xray is great. It also includes a nifty admin site that allows you to access objects and spy on your code at any time.

Xray (The AdminTool) is a “snapshot viewer” of the current state of your Flash application without impacting the performance or the file size of your application. Xray’s true nature is to look into the very guts of the Flash application and disolve the 2d myth you see on screen to a 3D tangible entity you can truly crawl through.Xray is brought to you by Blitz Labs.
- AS3 Debugging with Firebug and Actionscript from marcosweskampWhen using Firebug (a web developers Swiss army knife for browser debugging) you can also use actionscript to write to the firebug console with this class from marcosweskamp The code to Console.as for firebug is here.
- Output Panel from Senocular
Last but not least, try out this class that creates or mimic the output panel in flash. Another great quick class from senocular. You have to change your trace command to Output.trace but I recommend that you abstract logging anyways to a method that can determine to trace, Output.trace(str:*) or any further logging you might want to do for debug or application logs (it also makes it easy to switch out logging options). This Output panel can help when you don’t’ have the debugger available, or for use in a live debug mode of your application. This class can be implemented in minutes.
package com.senocular.utils { import flash.display.Shape; import flash.display.Sprite; import flash.display.Stage; import flash.display.GradientType; import flash.events.Event; import flash.events.MouseEvent; import flash.geom.Matrix; import flash.text.TextField; import flash.text.TextFieldType; import flash.text.TextFormat; import flash.text.TextFormatAlign; import flash.text.TextFieldAutoSize; /** * Creates a pseudo Output panel in a publish * swf for displaying trace statements. * For the output panel to capture trace * statements, you must use Output.trace() * and add an instance to the stage: * stage.addChild(new Output()); * * Note: You may want to place Output in an * unnamed package to make it easier to * trace within your classes without having * to import com.senocular.utils.Output. */ public class Output extends Sprite { private var output_txt:TextField; private var titleBar:Sprite; private static var instance:Output; private static var autoExpand:Boolean = true; private static var maxLength:int = 1000; public function Output(outputHeight:uint = 150){ if (instance && instance.parent){ instance.parent.removeChild(this); } instance = this; addChild(newOutputField(outputHeight)); addChild(newTitleBar()); addEventListener(Event.ADDED, added); addEventListener(Event.REMOVED, removed); } // public methods public static function trace(str:*):void { if (!instance) return; instance.output_txt.appendText(str+“n”); if (instance.output_txt.length > maxLength) { instance.output_txt.text = instance.output_txt.text.slice(-maxLength); } instance.output_txt.scrollV = instance.output_txt.maxScrollV; if (autoExpand && !instance.output_txt.visible) instance.toggleCollapse(); } public static function clear():void { if (!instance) return; instance.output_txt.text = “”; } private function newOutputField(outputHeight:uint):TextField { output_txt = new TextField(); output_txt.type = TextFieldType.INPUT; output_txt.border = true; output_txt.borderColor = 0; output_txt.background = true; output_txt.backgroundColor = 0xFFFFFF; output_txt.height = outputHeight; var format:TextFormat = output_txt.getTextFormat(); format.font = “_typewriter”; output_txt.setTextFormat(format); output_txt.defaultTextFormat = format; return output_txt; } private function newTitleBar():Sprite { var barGraphics:Shape = new Shape(); barGraphics.name = “bar”; var colors:Array = new Array(0xE0E0F0, 0xB0C0D0, 0xE0E0F0); var alphas:Array = new Array(1, 1, 1); var ratios:Array = new Array(0, 50, 255); var gradientMatrix:Matrix = new Matrix(); gradientMatrix.createGradientBox(18, 18, Math.PI/2, 0, 0); barGraphics.graphics.lineStyle(0); barGraphics.graphics.beginGradientFill(GradientType.LINEAR, colors, alphas, ratios, gradientMatrix); barGraphics.graphics.drawRect(0, 0, 18, 18); var barLabel:TextField = new TextField(); barLabel.autoSize = TextFieldAutoSize.LEFT; barLabel.selectable = false; barLabel.text = “Output”; var format:TextFormat = barLabel.getTextFormat(); format.font = “_sans”; barLabel.setTextFormat(format); titleBar = new Sprite(); titleBar.addChild(barGraphics); titleBar.addChild(barLabel); return titleBar; } // Event handlers private function added(evt:Event):void { stage.addEventListener(Event.RESIZE, fitToStage); titleBar.addEventListener(MouseEvent.CLICK, toggleCollapse); fitToStage(); toggleCollapse(); } private function removed(evt:Event):void { stage.removeEventListener(Event.RESIZE, fitToStage); titleBar.removeEventListener(MouseEvent.CLICK, toggleCollapse); } private function toggleCollapse(evt:Event = null):void { if (!instance) return; output_txt.visible = !output_txt.visible; fitToStage(evt); } private function fitToStage(evt:Event = null):void { if (!stage) return; output_txt.width = stage.stageWidth; output_txt.y = stage.stageHeight - output_txt.height; titleBar.y = (output_txt.visible) ? output_txt.y - titleBar.height : stage.stageHeight - titleBar.height; titleBar.getChildByName(“bar”).width = stage.stageWidth; } } }
Other debug and logging tools that may help are listed here from OSflash.
- Alcon – An external output console for Actionscript debugging
- LuminicBox.Log – A logging API and output console for ActionScript
- DebugIt – Displays traced data in a seperate SWF so you can debug outside of Flash, while running your application in its shell/production environment.
- Print_r Debugger – Brings PHP‘s “print_r” to Flash, invaluable once you start to use it. Free, Complete Source Available
- Sock4Log – JAVA application which displays traced data from SWF and other (PHP,JS…). Could be a command line or windowed application.

Haxe is a very interesting project that is a scripting language that can create SWF for Flash.
Haxe has now added Flash9 Assembler library called hxASM and released version 1.1.4 that includes performance updates for Flash9 SWFs compiled using Haxe scripting.
I have to compile SWFs dynamically right now in a service and this is a very attractive solution with the new version and the performance improvements. Previously there was some slow down and only static content really worked well but if this is equal or a 30% improvement that is excellent.
Flex 2 can also compile at the command line you can compile flash9 swf with or without the flex2 libraries, when using mxml the flex libraries are included which add 100k or so minimum. It is not required to compile with flex 2 libraries though.
Flex 2 command compiler options
Haxe command compiler tutorial
Full Haxe API (includes all flash libraries)
shirotokoro has created something interesting in the view of a pipeline for getting assets from 3d into the new Flash 3D engines with a Geom Class Exporter for 3ds max for PV3D, Sandy and Away3D.
One of the difficulties is the DAE/COLLADA and ASE imports dynamically at runtime in Flash 3d Engines sometimes takes some work to clean up the 3d objects in COLLADA xml or the ASE or 3ds if you are Sandy. But this takes that step out of the process and exports 3d models straight to flash 3d engine object scenes.
This is great for models that don’t’ need to be dynamically imported/parsed (which takes lots of time usually to parse the DAE in flash). I am not sure how detailed or elaborate the models can get as I haven’t had a chance to play with it yet but it is an interesting idea and development but the cat samples he has are fairly complex for a flash 3d engine and they look great. I think this can be used elsewhere preparing objects for 3d in flash as precompiled movieclips already. Maybe even a turbosquid like market for flash 3d. This could be fun.
from shirotokoro via pv3d list:
AS3 Geom Class Exporter is a 3DS Max designed script that allows you to directly export 3D models to AS3 classes.
he benefit is that you don’t need anymore to load and parse a texte file (ase, obj, 3ds).
You just have to import the class and to create an instance, like you do with usual objects like plan, sphere and box classes.
This script is compatible with the following AS3-3D engines :
Away3d
Sandy 3.0
Papervision 1.5
Installation :
Download zip file and unzip in any folder.
In 3DS Max, tools tab, open the maxscript panel and click the “execute script” button.
Select the script. It is now displayed in the available scripts list.
Select it, a new AS3 panel “AS3 geom Exporter” appears.
Options :
- Package : the exported class package
- ClassName : the class name
- Engine : the 3D engine you want to use
- Scale : scale the 3D object
- Swap face normal : with some 3D models, the faces export is swapped, you can fix this by selecting this box.
Here are rendering examples of an object in the following 3D engines :
Away3d
Sandy
Papervision
Download demo sources and 3ds max script
Thanks shirotokoro !
SharpDevelop 3 which can be downloaded from build servers here is looking pretty good for revision 3 of my favorite .NET Open Source IDE and maybe even favorite overall considering it responds quicker that everyone’s .NET tool VS.NET.
The latest revision in builds just got the WPF and XAML tools in there. I tend to not use SharpDevelop for website development but do so for class libraries, apps and maybe forms development on occasion. This might help the layout side of things for the next gen of user interface development in .NET beyond just Expression.
One thing that has been apparent with IDEs as sometimes as they grow in size and scope and try to add more features, it is actually a slow down in some cases. I have been slowed from VS.NET 2003 to 2005. They are great tools but things start taking longer, it seems it should be the other way around.
When I need to just bust out a class library many times I do so in SharpDevelop because it is responsive and quick. I just hope they retain this speed. I unfortunately like to work on many projects at once so my IDE has to be smart about long processes (I curse you pending checkins! In 2004 when in beta VS.NET forced me to external IDE source control in Subversion and TortoiseSVN – much happier now).
XAMLPad right now is a pretty good quick development tools for XAML as well beyond just Expression and VS.NET Orcas Beta.
Be sure to try out SharpDevelop if you have not yet and develop .NET or would like to start. It is a great IDE and has some good extras like converting C# > VB.NET buffers whichcan be extended out to a service.
APE an actionscript physics engine and it recently moved from LGPL to MIT license, updated to version .45 and added a new walker demo. Although the Google group is available there is no RSS feed of releases for this engine so be sure to check back for new releases of APE Physics Engine for AS3 from Alec Cove.

Walk on!
Grant Skinner has one upped the Flash CS3 AIR application export ability by adding a very useful panel to package Adobe AIR applications.
This is a pretty nice tool as usual from gskinner. Be sure to check out the panel and all the installation info at Grant Skinner’s blog.
Download the AIRPanel zip file from here
merhl has created an Adobe AIR iPhone widget for using the AIR runtime that is pretty cool. It only has some sample screens for most buttons in it but you can actually browse the web on it using the web browser and it flips sideways to show the screen flip. Check out your website or blog on the desktop iPhone. Get your AIR iPhone now!
merhl has made it auto updating with AIR so as he adds more functionality it will autoupdate. That is one neat aspect of doing desktop app/widget work with flash and AS3 in AIR is that it is much more capable of syncing content and that content is usually extremely optimized for fast delivery and keeping it up to date. Plus you can make chrome and shiny things with it.
John Grden the resident Flash rockstar \m/ and of Red5 fame has been kind enough to release the Papervision3D FlashCS3 UI Components.
What’s nice about this is it lowers the bar to people using Papervision3D and make it more accessible to non programmers. I have been working to get Papervision3D in many projects but this will make it easier to get designers more into the engine and using Flash to create pv3d experiences. It may also help others to combine pv3d and 2d into some neat mashups (all this can be done before in script but when barriers are lowered usually more creativity follows, also visual use of 3d models in the IDE is powerful).
Here’s what John has cooked up:
Finally! After waiting for a couple of months, I’m able to release the new Flash CS3 Papervision3D Components! There’s a lot to cover, but to get things started, let’s look at the features:
- Design-time render and editing in Flash IDE
- 3 Material types supported – BitmapFileMaterial, BitmaAssetMaterial and MovieAssetMaterial
- Creates MovieScene3D and Free or Target camera
- Manages resizing / centering of Papervision3D scene [optional]
- Dynamic masking to constrain the viewable render area to the bounds of the component [optional]
- Full API and access to Scene, Camera, Collada objects to code around
- Automatically loads materials via Collada file [when materials list is not given]
- New Custom Panel for modifying rotation, camera zoom, camera focus, camera Z at design-timeReady to get started?
Download it hereYou’ll needs some docs with that sauce:
DOCSWanna see it in real world action? I used it for the slide presentations at the class this last weekend at RMI.
Here are the demo files and the project for the Jedi Training Sphere slide showIn case you wanted to see the Jedi Sphere in action, and thus, the slides from the classes:
Developer’s slides
Designer’s slidesAnd of course, you can find all of that stuff out on Google code:
Papervision3D google home
Be sure to check out the quick video and more info over at RockOnFlash
Rock on John!













