StateMachine Setup Error
Hi Guys,
[Hope i'm placing this in the correct place!]
I used the StateMachine all the time in PureMVC and was stoked
to see it used in RobotLegs.
But on my first attept to implement it i have run into an error,
which could quite likely be something im doing incorrectly.
override public function execute():void
{
var fsm:XML =
<fsm initial={LoadupEvent.STATE}>
<state name={LoadupEvent.STATE} entering={LoadupEvent.ENTER} exiting={LoadupEvent.EXIT} changed={LoadupEvent.CHANGED} />
</fsm>;
var stateMachine:StateMachine = new StateMachine();
var fsmInjector:FSMInjector = new FSMInjector(fsm);
injector.injectInto(fsmInjector);
fsmInjector.inject(stateMachine);
}
This is throwing the following error:
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at org.swiftsuspenders::VariableInjectionPoint/applyInjection()[/Users/tschneidereit/dev/swiftsuspenders/swiftsuspenders/src/org/swiftsuspenders/VariableInjectionPoint.as:48]
at org.swiftsuspenders::Injector/injectInto()[/Users/tschneidereit/dev/swiftsuspenders/swiftsuspenders/src/org/swiftsuspenders/Injector.as:113]
at com.freeworldcoatings.intranet.controller.controls.prep::PrepStateMachineCommand/execute()[C:\dev\Freeworld Intranet\site\src\com\freeworldcoatings\intranet\controller\controls\prep\PrepStateMachineCommand.as:29]
at org.robotlegs.base::CommandMap/routeEventToCommand()[/Users/shaun/Documents/Development/Workspaces/GanymedeFB4/robotlegs-framework/src/org/robotlegs/base/CommandMap.as:151]
at <anonymous>()[/Users/shaun/Documents/Development/Workspaces/GanymedeFB4/robotlegs-framework/src/org/robotlegs/base/CommandMap.as:102]
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at com.freeworldcoatings.intranet::ApplicationContext/startup()[C:\dev\Freeworld Intranet\site\src\com\freeworldcoatings\intranet\ApplicationContext.as:35]
at org.robotlegs.base::ContextBase/initialize()[/Users/shaun/Documents/Development/Workspaces/GanymedeFB4/robotlegs-framework/src/org/robotlegs/base/ContextBase.as:120]
at org.robotlegs.base::ContextBase()[/Users/shaun/Documents/Development/Workspaces/GanymedeFB4/robotlegs-framework/src/org/robotlegs/base/ContextBase.as:83]
at org.robotlegs.mvcs::Context()[/Users/shaun/Documents/Development/Workspaces/GanymedeFB4/robotlegs-framework/src/org/robotlegs/mvcs/Context.as:43]
at com.freeworldcoatings.intranet::ApplicationContext()[C:\dev\Freeworld Intranet\site\src\com\freeworldcoatings\intranet\ApplicationContext.as:23]
at Main/init()[C:\dev\Freeworld Intranet\site\src\Main.as:25]
at flash.display::DisplayObjectContainer/addChild()
at Preloader/startup()[C:\dev\Freeworld Intranet\site\src\Preloader.as:43]
at Preloader/checkFrame()[C:\dev\Freeworld Intranet\site\src\Preloader.as:33]
Any ideas? ......... also i have just moved from using the "Proxy' version of RL to the 9.5 release.
Cheers
Kyle
Comments are currently closed for this discussion. You can start a new one.
Keyboard shortcuts
Generic
? | Show this help |
---|---|
ESC | Blurs the current field |
Comment Form
r | Focus the comment reply box |
---|---|
^ + ↩ | Submit the comment |
You can use Command ⌘
instead of Control ^
on Mac
Support Staff 1 Posted by Joel Hooks on 27 Oct, 2009 02:22 PM
I'd need to see more code, but I didn't test the FSM against a single state. I will add that to the unit tests and see if I can reproduce the error. I also didn't test against the entering position, so I will do that also. Thank you for providing some cases ;)
This is what I'd consider the minimal setup for the state machine (as it is now):
2 Posted by kyle on 27 Oct, 2009 02:37 PM
This is the project so far, i only have two states.
Support Staff 3 Posted by Joel Hooks on 27 Oct, 2009 03:38 PM
LoadupMonitorEvent is missing from the archive, and there is an error
in LoginView.as at line 50 calling a class, loginMC().
I think also that using event constants for the state constants is
probably a bad idea, as the state machine is utilizing the central
event bus. This could very well introduce conflicts. Better to just
have a static StateMachineConstants class that defines these states:
http://github.com/joelhooks/robotlegs-examples-UnionPlatformChatClient/blob/master/src/org/robotlegs/examples/bootstrap/AppConfigStateConstants.as
here is an example of that.
Support Staff 4 Posted by Joel Hooks on 27 Oct, 2009 04:34 PM
Hey Kyle,
I gutted out some stuff just to show the FSM in your app as it cycles through some states. I've attached the src folder.
5 Posted by kyle on 28 Oct, 2009 06:56 AM
Hi Joel,
Thanks for the feedback and help.
I like the StateMachineConstants idea and will now implement it!
In your refleshing you code:
But in the versions of statemachine i have, from git, the statemachine doesnt take a constructor parameter. Presumable i have the wrong version?
Cheers
Kyle
Joel Hooks closed this discussion on 29 Oct, 2009 06:46 AM.
Joel Hooks re-opened this discussion on 29 Oct, 2009 06:47 AM
Support Staff 6 Posted by Joel Hooks on 29 Oct, 2009 06:47 AM
I emailed a reply, I guess it didn't go through, but yes, that was an older version.
Joel Hooks closed this discussion on 29 Oct, 2009 11:35 PM.