source code here:
http://puremvc-utilities.googlecode.com/svn/tags/fsm_viz_0.4
Added the decode to AS3.
OK, so next I’m going to rip this all down and re-architecture it.
Added the decode to AS3.
OK, so next I’m going to rip this all down and re-architecture it.
OK, so I’ve added the ability to open from JSON or XML and also to decode to them. Originally, I was just going to save out to JSON as the main “file-type”, and export to an AS3 file, but after Jason MacDonald suggested it would be good to export/import the xml, I thought why not, it only took an hour.
The only things to note are that the XML looses all the meta data that the JSON preserves. And secondly, because of this, it can only import XML that uses the naming conversions outlined below.
Naming convertions:
I think that these are pretty uncontentious with the exception of the choice of delimiter for the prefix. This I think will be changable by the user.
All I have to do now is that all important conversion to an AS3 file, then I can rip the whole thing apart and rebuild it.
So, any suggestions as to deployment? Air, online with php service?, Zinc? (Zinc? LOL only joking!)
So this is just the visualisation and the editing of the States and Actions. I still need to implement the saving out of state, and the export of the StateConstants.as
A few points and pointers:
Sorry I’ve been neglecting my blog recently. What with a brute force attack of malware, and working on some bread-and-butter projects, I’ve been a bit diverted.
However, I have found the time to play around with the FSM Visualiser and have been working on the best way to display and interact with it, so I’ll probably stick something fresh up with in the next week or so.
just put the FSMViz project on my google code page.
To grab from the svn use:
http://puremvc-utilities.googlecode.com/svn/trunk/fsmviz.
UPDATE: removed this demo due to it getting infected. Will upload a newer version once I have time to work on something
I have added some more functionality to the FSMViualisation.
Just a few notes:
1) I haven’t been able to add labels to the actions (arrows) yet (well, not prettily anyhow).
2) I have used the BundledEdgeRouter which makes those nice arrows. The problem with this is that any arrow that connects the same two nodes will lie on the same line.
3) at the moment, to update the diagram, I am having to edit my VOs, parse them into a Flare Data object, then construct a new Visualisation with it. It seems a bit expensive (not that affects the speed at all).
4) you can add States into a package. This does not affect any of the code that will eventually be exported, but does allow you to group the state together, and makes the diagram look far more appealing.
I’ve whipped up a quick demo for the pureMVC StateMachine utility, illustrating the encapsulation of an asynchronous process (loading external images) within a state.
State Diagram:
The red LOADING state represents the non-interactive state, were the laoding takes place. The state is left when all the images are loaded (to DISPLAY), or an error occurs (to READY).
Demo App:
In the spirit of community, I am posting a list of AS3 developers whom I would personally recommend, should I (obviously top of this list) not be available.
These are top guys, contact them now!
Neil Manuell (revision)
Matt Pearson (zenbullets)
Matt Sayers (soplausable)
Owen Bennett (steamboy)
Rich Willis (rich text format)
Nikos Chagialas (devGallery)
and
Pedr Brown
These guys are all members of the award nominated social network of FlashBrighton
*Update see this post for the latest version*
Here is an implementation of a simple State Machine for pureMVC that I whipped up for a project. This is really useful for anyone creating applications, honest, its saved my life a few times :) It suddenly occurred to me that because its so simple I’ve been taking its power for granted, and I should share it for the greater geek good. I’ve been using it in combination with trilec’s command chaining utility as a way of controling my command structures.
Have put the code in the svn on my google code page and will prepare a download when I’ve documented it.
Initiate the StateMachine
// instanitate
var stateMachine:StateMachine = new StateMachine();
// register with the facade before registering any commands
facade.registerMediator(stateMachine);
// create a state
var state:State = new State(ApplicationStates.STATE_ONE)
// register the commands to be triggered when
// entering and exiting that state
stateMachine.registerStateChangeCommands(EnterStateOne,
ExitStateOne,
state);
// repeat for each state (this can be done any time)
state = new State(ApplicationStates.STATE_TWO)
stateMachine.registerStateChangeCommands(EnterStateTwo,
ExitStateTwo,
state);
Changing State
This is very simple, just send a notification from anywhere within the pureMVC framework with a new state as its body:
// create a state
var state:State = new State(ApplicationStates.STATE_TWO)
sendNotification(StateNoteNames.CHANGE_APPLICATION_STATE,
state))
check out this very useful article:
Turning a Flex Actionscript project into a Flex AIR project
as far as I can make out, the only swcs you need for a flex as3/air project (no flex-framework) are:
playerglobal.swc
flex.swc
utilities.swc
airglobal.swc
airframework.swc
servicemonitor.swc