Flex :: Creating RobotLegs Module Within A PureMVC Shell Application
Oct 19, 2010
I'm working on an existing modular project that was built in PureMVC. Instead of converting everything over to RobotLegs, I want to create a new module using RobotLegs and plug it into the pureMVC shell. Currently, when the module loads, I get the following flash error: ReferenceError: Error #1065: Variable IMediatorMap is not defined.
Inititally, I thought it was because my module needed a pureMVC Mediator to call the pureMVC StartupCommand to get things "hooked up" and THEN create the RobotLegs' Context. However, that didn't work and I'm still getting the error.
There is a Shell and a Module. The Shell loads the Module. Module is never run without the Shell. Because there will be more modules, I decided to put common classes to Shell.
1. Compiled Shell with -link-report objShell_Extern.xml
2. Compiled Module with -load-externs obj<ShellProject>_Extern.xml Module size shrank from 90 KB to 2,05 KB.
3. Added 5 filters to Module:
import flash.filters.*; tf.filters = [new GlowFilter(), new GradientGlowFilter(), new DropShadowFilter(), new BevelFilter(), new BlurFilter() ];
Module size grew to 2,15 KB.
4. Added 5 filters to Shell (same code as above), recompiled it, then recompiled Module.Module size still at 2,15 KB.
5. Tried getDefinitionByName //import flash.filters.*; commented out var GlowFilter:Class = Class(getDefinitionByName("GlowFilter")); var GradientGlowFilter:Class = Class(getDefinitionByName("GradientGlowFilter"));
[code]....
Error #1065 GlowFilter not initialized, Module size grew to 2,19 KB. Deleting some, but not all filters is decreasing size, so it's not the getDefinitonByName that takes 0,14 KB (2,19 - 2,05 without filters).
1. Do I understand the idea of load externs, or does it work only with specific classes? Why it doesn't work with filters?
2. What did I screw up with getDefinitionByName and is it a new feature because of it's use like in link below?
I have a problem with an application that uses RobotLegs in a Flex module. I finally managed to load my module successfully, but when I try to add this line of code in the module view's Mediator:view.addElementAt(applicationContainer,0);
I get this error: TypeError: Error #1009: Cannot access a property or method of a null object reference. at mx.core::UIComponent/getStyle()
I'm creating a flash campaign which will be loaded into a client's framework, which I have no control over. The framework will already have loaded a few things such as locale, fonts and copy, and will pass these things to my swf upon initialization.
Since the size of my swf (let's call it the shell) is restricted it will in turn display a campaign-specific preloader and then load another swf (let's call this the campaign) with the rest of the site.
The shell and the campaign will both be PureMVC modules. The shell will create a few proxies and populate these with data passed from the framework (locale constants, fonts etc), before loading in the campaign.
When the campaign is loaded it too will need locale and fonts etc. so my question is, what is the best way to pass this data along to the campaign module from the shell module?
I could create the same proxies in the campaign module and load the data again, which will be cached, but this obviously feels like the wrong way to go.I've investigated the use of the pipes utility but this seems like a bit of an overkill in my case since the communication will be one-way and will just happen once during the initialization of the campaign.
Would it be "ok" from a design pattern point of view to pass the proxies to an init method of the campaign module and then register these proxies in the campaign module startup command? This seems wrong since these proxies have references to my shell application facade through notification names. Would it be ok if I move the notification names to some "NotificationConstants" class which both modules can use?
I could create similar proxies in the campaign module but this time populate them with the data objects from my old proxies passed to the previously mentioned init method? Spontaneously this feels like the best way to do it since the data objects don't have any references to my shell module but the "old" proxies do..
I have a flex application written using PureMVC framework.Now,I want to write tests.We are using FlashBuilder 4.Is FlexUnit sufficient for testing? Are there any issues you have faced while writing tests?
My company is building a Flex application that we may need to port to other platforms:
[Code]...
Currently, I'm looking into application frameworks to build upon and I'm torn between pureMVC and Swiz. I LOVE swiz for its simplicity and how it just gives you a way to hook things up and then apply your own patterns. From a flex-only perspective, this is my 1st choice. But, PureMVC is platform-independent and has already been ported over to most of the platforms that are mentioned above. How valuable is this portability? Will it really make our lives significantly easier when it comes to porting and developing/maintaining multiple applications? If so, then it seems like PureMVC is the way to go.
Alternatively, since Silverlight has the most definite business case for porting of our application, maybe we could port Swiz to Silverlight? I'm not too familiar with which AS3 language and Flex framework features Swiz depends on and whether they are available in C#/Silvelright.
I have an application built on Flex 2. I am writing a new application (module based) in Flex 3. Will these be able to co-exist? Can I invoke Flex 3 module from Flex 2 application?
Ok, modules in Flex are popular but I have no idea why documentation and examples on the different uses of Flex modules can be so scarce.Anyway, for this question, I will take the classic Employee/Department example. I have a main.mxml that contains an mx:TabNavigator. Each tab is loaded by an s:ModuleLoader.Tables: Employees {empID,empName,deptID}, Deparments {deptID,deptName}The Tab Navigator contains only one tab (for our example) called Employee. I have an Employee.mxml module. In that module, I have a datagrid that is populated with Employee details. I use the getEmployees($deptID) function. This function, as you may guess, returns me an array of Employees who work in a particular department.
Outside the TabNavigator, I have a departmentDropDownList that is populated with departments.deptName.My objective is to load the Employee module when I select a particular department from the DropDownList. I have a changeHandler for the DropDownList that can give me the deptID.
protected function departmentDropDownList_changeHandler(event:IndexChangeEvent):void { MyDeptID=departmentDropDownList.selectedItem.deptID;
I'm trying to create a module for a flex application, and I want to send notifications to clients. I've been looking at the BlazeDS messaging service to push out the notifications to clients, but I want to be able to send certain updates to certain clients. The Flex notification framework doesn't seem to allow this - if we have a field in the message with a value of the user's user id for example, any client could theoretically subscribe to all messages for any given user id, and there's no verification on the server side to make sure that the client that has subscribed is logged in as that user id.Is there something I've missed here, or is the best way to handle this writing my own polling mechanism on the client side?
I have a large module written in JS which uses Canvas to draw and animate trees. This module was written for a product which is now being migrated to flex.
Is there a way in flex to embed this JS module as is? Or would I have to rewrite the whole module in AS3 (shudder)? Further, if embedding is possible, would user interactions (mouse clicks) etc. work seamlessly?
An example of the tree structure I am talking about can be found here - [URL]..
Is there a way how modules can listen to parent application event? My current solution that works is:
private function directoryRemoteObject_saveCompany_resultHandler(e:ResultEvent):void { this.directoryModuleLoader.child.dispatchEvent(new CompanyEvent(CompanyEvent.COMPANY_SAVED, e.result as int)); }
this means that I need to dispatch event for every module.
I'm building an Air for Android App and I'm having problems loading a flex module. Does anyone know if loading modules is possible???
I built a simple app with just a ModuleLoader in it, which loads a mx:module. The module has only a simple mx:Label with a "Hello World" text.I build a .air with this. Then I build a .apk with the followin adt command.
I know that the best way to make a connection from my main app to my modules is through interfaces.
So, my problem is, how can I implement an interface so my module can send and receive data from my main app?, cuz, I understand that my module implements an interface that is used by my main app.. but, can I do it "viceversa"?
Other issue I have is, why do I need to call my main app children if I can just import a module's class?.
I'm implementing a Flex application with several modules.I'm reusing the same component in all these modules.I was wondering if I'm correctly importing it in each mxml module definition: xmlns:hillelcoren="com.hillelcoren.components.*"Should I import it only once, in the main application mxml instead?
public class MyApplicationMediator extends Mediator { [Inject][code].... So onRegister() gets called, but view is null. Also when I try to add the eventListeners I get a null reference error.
Currently optimizing an application at work. There are many files in some of the module projects that are not used by the exported (release build) Module.swf's. Are these unused files included in the swf's?
I have made a start on my quiz, in order to complete the criterions I have to create a project (a quiz in my case) which uses a variety of methods and tools e.g. drag and drop features, user text input and numeric input etc.I had planned on creating 4 topics and 4 questions in each. Having searched the forum it appears that the common consensus for creating a quiz is to set up your questions in a XML file however I have no idea how to use this or what it is. Moreover from my research I found I appear to be doing things slightly different to other people who are doing or did a quiz. This difference is how the answers are input; I will be user input text fields along, multiply choice buttons etc. I also am placing my questions in different places for different sections and I am also required to use video.This may still be able to be done however I only have 29 days to complete the task and the way I'm planning will be quicker as I understand how it works at least. The first problem I am having is how to code for the input text. I plan on allowing for the user to input a word and then to compare that word against the correct answer. This also brings me onto my second problem. Once a section of questions has been completed I plan on taking the user to a screen which displays how many answers they got correct. This would involve tracking their answers and comparing them to a set of correct answers however I have no idea how to do this. (from what i have learnt recently the use of an array maybe?).
The final problem I am having at the moment is setting up a 'barrier of sorts' In my first question i have set up a mask which applies only to the image I have also placed on the stage. The mask is applied to a circle which can be dragged around displaying small sections of the picture at a time. I wish to stop the circle leaving the picture as it falls under the background once it as left the area of the image. This results it in disappearing. I have no idea how to solve this and I could not find information on it. The solution I think would be to stop the masked circle leaving the area of the picture OR to reset it back to original position if it is released outside the images area.My quiz is far from complete at the moment and I have not yet even finished the frames for each of the questions however these problems are fundamental to the quiz's success and so I felt I needed to confront them now.I can upload what I have done so far and send the link in a pm so you can see what I mean (if it is not already clear)
I am planning to start a new project in as3 and I want Dependency Injection in the project. I found that parsley and Robotlegs are two popular frameworks for implementing DI in AS3. Which is the best one among these two?
My main requirements are
lightweight minimal learning extensive documentation and active helping community
I am having a problem with preloaders showing up in my flex apps. I never had this problem when developing flash apps so I got the idea to use a flash app as a shell with the sole purpose of showing a preloader while the flex app loads. I am not sure how to do this though, and I also need to ba able to pass the FlashVars from the shell flash app to the flex app.
Is model injection on the fly possible? In other words,if I ask for a model of the type IPhotoModel, I should get one of its implementations based on the current state of the view. If I am looking at a UserPage,I should get a user-specific implementation of that model.I am looking at a LocationPage,I should get a location-specific implementation.Currently, the only way that I see is introducing a command that specifies the model mapping, with a concrete one based on the current view state ...
injector.mapValue(IPhotoViewModel, injector.getInstance(UserPhotoViewModel)) or injector.mapValue(IPhotoViewModel, injector.getInstance(LocationPhotoViewModel))
is this the best way possible? I do not really want to introduce much coupling logic outside of the context, but ...
My company is willing to reffactor its biggest and heaviest project introducing some kind of framework. Are there good online source/issue/blogpost with comparison of these 3 frameworks - Robotlegs, Swiz and Mate?
I've just recently learned the PureMVC framework, and am a little confused as to the coupling between Proxy and Mediator objects. The links on this page connect to some documents describing the framework. (Please note, the links on the aforementioned page open PDFs.)
The diagrams and examples of PureMVC I've examined often show a direct coupling between a Mediator and Proxy. When the proxy's state is updated, rather than sending a new Notification, the Mediator (which retrieves a reference to the Proxy from the Facade) has its state updated.
This certainly seems to simplify the logic of the code, but it also directly couples two seemingly disparate components together. To my understanding, a Mediator's purpose is to translate Events from a view into PureMVC Notifications. Proxies are meant to perform some function to gather data and relay it back to the view. These two components seem to exist in different layers of the application, and perhaps shouldn't necessarily be coupled together.
Wouldn't it make more sense to have the Proxy objects send their own Notifications when their state updates, which are forwarded to the interested Mediator by the Facade?
I'm building modular application with 2 modules which share common vo: ShopRegionVO
This vo is also a BlazeDS entity and is mapped to a remote java object. When shell loads first module everything is ok. The second module is a list of ShopRegionVOs and item change is handled with the following code:
I will create a voice chat application with Adobe Flex and I want use the opensource Red5 as a server.But, I confuse how to start it. it's possible just use NetStream and NetConnection?
I am building a tabbed interface for switching between various similar layers. Each layer will have a number of graphs. By dragging with the mouse the graphs can be rearranged or even moved between layers. My question is, is it best practice to register a unique mediator for each layer that keeps track of the layers content / organization, or should i keep track of it all with one central mediator.some considerations:
the layer contents and organization will be saved(in a db) so that it can be restored when a user comes back to the app.the layers themselves are functionally identical.the user can add and remove layers at will.