Actionscript 3 :: Custom Array Serialization On Flex Client?
Aug 31, 2010
I was wondering if it is possible to do custom serialization of Arrays/ArrayCollections in as3 via amf. To be more specific, i want to be able to pool objects on the client so that im not instantiating new objects every time i make a RemoteObject call. I tried using IExternalizable but that only lets me serialize the objects myself not instantiate them. The flash player is still instantiating objects itself and them letting me set the object state via readExternal.
What is serialization support like for the new Vector class? I have a Vector.<GameMove> which I'd like to serialize into a ByteArray. GameMove is a custom class. I presume it's necesssary to call registerClassAlias() on GameMove, but do I also have to register Vector.<GameMove>? It's it it's own distinctive type, or is it kinda composed of those two types?
I have creating a distributed note taking application in flex, it basically is a notepad I can keep in my desktop tray. When I add notes and goes back to a server and saves it in a database.
To am struggling to design the application correctly, I want to have a Syncing service that polls the webserver for changes and updates an Array of Note objects. The problem is that my note corresponds mxml component, aka SingleNote component. There are four different cases when being, a. a note is updated from the server poll, in that case I want to singlenote to update the settings b. a note is added to the array from the server, in that case a new SingleNote needs to be created c. a SingleNote is added from client, in that case a Note is added to array, and sent back to server d. a SingleNote is change from client, in that case the Note is updated in the array and sent back to server
I have been trying to test my application to make sure that all the important classes can serialize/reload themselves properly (especially those which implement IExternalizable):
[Test] public function testMyObjectSerialization():void { var myobj:MyObject = new MyObject();[code]....
And I would like to be warned when I try to serialize a strongly-typed object which does not have a [RemoteClass] set (because that almost certainly represents a bug in my code).So, is there any way to configure the AMF serializer to give warnings?Also, it seems like this might be possible using services-config.xml... But the documentation seems to imply that services-config is channel-level, and I'd really like it if my unit tests could run without talking to the server (and I'm not using LCDS, so a bunch of the services-config wouldn't apply to me anyway).
I have a Panel in my application which contains 2 buttons and 3 canvas components at certain posstions...now I want to store the current state of panel in some file or database...and afterwards I want to load the same panel again in my application when I come back and run the application. I tried to convert whole panel into ByteArray object using its readObject() and writeObject() methods...but when I read the ByteArray and add the panel in my application using addChild() method it doesn't add anything and there was no error or fault...
writeObject creates ByteArray that I am able to print but when i get it back and add child, I am not able to get the panel and it's children.
I recently came into a situation when sending a nested object from Java to Flex via a HashMap the Objects were null. More precisely:final Map< Integer, List<String>> tempMap = new HashMap<Integer, List<String>>();would send the keys as integers but the values were all null.But when sending the same with String keys:final Map<String, List<String>> tempMap = new HashMap<String, List<String>>();the objects came thru.Are there any restrictions in BlazeDS serialization when using complex types as keys?
Is there any way, without having the creator of the object implement any special functions (no specific serialization functions) (however, they can use annotations), to have Flash serialize a generic, possibly deep (objects within objects within objects, etc, etc, etc) object?
I've been looking at various questions in StackOverflow and in other sites, but I have not seen a library that a) generates actionscript code given XSDb) serializes to and deserializes from XML using the generated classes. In Java world this is JAXB. I have a set of large XSDs, based on which a web service is producing XML output. I don't want to write actionscriptclasses by hand, that'd be huge piece of work. Having source code in actionscript since writing code based on runtime binding of xml/json to objects is much more error prone compared to having proxy like classes.
I'm using BlazeDS to remote some Java objects that I'm consuming in a Flex application. I'm getting a type coercion error with one of my classes that I can't for the life of me figure out. I have other classes that are working fine using the same data types, and I've gone over my mapping a dozen times. I'm following all of the necessary conventions for getters and setters as far as I know...
Anyhow, my question is: how can I debug this problem? Running the Flex app in debug mode spits out some generic errors to the console that don't really help much (TypeError: Error #1034: Type Coercion failed: cannot convert Object@5d1d809 to valueObjects.SomeClass.).
Now, to sort them, I obviously don't want to do something like this:
if( a == 'columnSelector' && b == 'headerImageLink' ) return -1; else if( a == 'columnSelector' && b == 'title' ) return -1; else if( a == 'columnSelector' && b == 'mainText' ) return -1;
So that brings up an interesting thing. I know you can optimize the above some using something like this:
if( a == 'columnSelector' || a == 'bodyImage' ) return -1;
This would get the last two, but lately I have just wanted community input on issues I have had in the past. So the question is, what is the best way to write a custom sort, using a relatively random order (not alphabetical, etc)?
I'm trying to use the native flex serialization/deserialization process to save/load state of a workspace in flex. In order to save or load a file I have to use my servlet, which just bounces back the bytes from the input stream to the output stream. Here's a basic outline of my Flex code:[code]So my problem here is not with the saving of the workspace. That works great. My problem is with the loading of a workspace. The event.data that I write to the byte array is not reconstituted into a MyWorkspace object even though it is exactly what I wrote to the file.There has to be a way of making a MyWorkspace object from the data, but I can't figure it out.
I've got a feature-heavy video player for a client that needs to do pretty much EVERYTHING that flash video can do. Included in the to-do list is bandwidth sniffing for dynamic video switching, which I've managed to make happen using SimpleClient, a custom netstream client class that can pump out the the users bandwidth(see below). The problem with this client is that it didn't include an onMetaData function that can give me all the stats on the streaming flv. In short, does anyone know how to add that functionality to the following .as file? Or, perhaps, does someone have a netstream client that DOES have all the bells and whistles?
I'm trying to add a custom callback handler to a NetStream client in a p2p application. The problem is, when I add such a handler, the NetStream Client doesn't function as it did before. It seems the NetStream.client object is changed. I know the default object is this. But changing the client to this doesn't solve the problem. The remoteControlStream, is the incoming stream. And the localControl stream is the stream being published. This is the localControlStream that's being send by the peer, and received as remoteControlStream:
private function initLocalControlStream():void{ localControlStream = new NetStream(nc, NetStream.DIRECT_CONNECTIONS); localControlStream.addEventListener(NetStatusEvent.NET_STATUS, localControlHandler); localControlStream.publish(myPeerID+"control"); var localControlStreamClient:Object = new Object(); [Code] .....
The onPeerConnect method of the localControlStream doesn't get called when I connect when the above handler is added. When I remove the that handler, the onPeerConnect method gets called. Obviously the problem is the NetStream.client.
This is NOT duplicate of my earlier post (its is slightly different)But this is similar issue with similar error but its not the same error The error I am getting now is below while dispatching the custom event from my custom component
TypeError: Error #1034: Type Coercion failed: cannot convert events::MapEvent@a74ab51 to flash.events.MouseEvent. dispatchEvent(new MapEvent(MapEvent.CLICKED_ON_MAP));
Note: The error in my earlier post is giving below error message
Type Coercion failed: cannot convert flash.events::Event@81ecb79 to com.events.ShopEvent
The difference here are two things, the earlier error is while converting flash event to custom event and now this one is while converting custom event to flash event and secondly, I have no clue why it is trying to convert to the mouseevent where I am just dispatching my custom event with proper listeners.
Does anyone know how to get actionscript to render a null date value '000:00:00T00:00:00'? I am calling a web service that expects date fields in the SOAP xml. I need some of these dates to serialize as null and I can't see how to produce null. The closest value I can get is '1899-11-30T00:00:00Z'. Below is the code I am using:
I've shoved an array in a RSO serverside and now i need to update values in the RSO client side ...I tried the following but it doesn't work...I'm using actionscript 3.0
I have a service which returns an Array of ObjectProxy objects. I would like to cast this to a custom object (a value object) and create an ArrayCollection. How can I do this?ited:I am using Django and PyAMF for the backend. I had to write a custom SQL query and I am wrapping the resulting records in ObjectProxy and sending the whole result as an ArrayCollection.Here is my client side code:
[ArrayElementType("SessionVO")] [Bindable] private var _list:ArrayCollection;
The spark panel component for example can be written like this
<Panel title="Skinny"> <child components ... /> <controlBarGroup> <child control bar components ... /> </controlBarGroup>
[Code]...
The motivation here is that I can now create a couple different skin files to change the look and layout of those subgroups. Reading source of the spark panel, there are some calls within the mx_internal namespace such as getMXMLContent() which is a method of the spark group component, but which I have no access to.
Does the description above make sense? How can I create custom 'contentGroups' in my custom Flex4 component that can use nested mxml child components? Should I approach this a different way?
I have the following situation:I have an event handler, that displays small messages in my application's statusbar.These messages get passes through by dispatching events from custom components.A simple message could be like "HTTP Error" or so.Now, the main event listener, in the main application file, listens to the event dispatched by any custom component,but seems to refuse listening to events dispatched by custom AS classes.Here is my code for the custom event:
package components { public class templateSelection extends VBox { static public var tempSelectionBag:Dictionary;
[Code]....
I want to have a custom class tempSelection with a Dictionary as a public accessable property of that class. If I use this code, the compiler tells me:
1046: Typ wurde nicht gefunden oder war keine Kompilierungszeit- onstante:Dictionary
Which translates to:
Type was not found or was not a compile-time constant: Dictionary
I have a custom Flex 4.5 component (to be used in a List) -
Game.mxml (represents a clickable playing table in a card game): <?xml version="1.0" encoding="utf-8"?> <s:ItemRenderer [code].......
But I never see the "game clicked: " trace. Does anybody please know why? I'm probably missing something minor, because I can see the "Clicked: 8946" trace.
This is similar to the question asked here. I am dispatching custom event "ShopEvent" but i am getting error "Type Coercion failed: cannot convert flash.events::Event@81ecb79 to com.events.ShopEvent"Note: Error is thrown from the parent custom component (3rd code snippet), I have added more details thereThis is my custom event. See the first constant, I copy pasted the event name in custom components.
I am trying to set up a communication between a flash client and a C# server. I would like to know if Flash allows me to perform XML serialization in the way that C# does. This is because I would like to use the XMLserialization class in C# for passing of data. If this is not possible, what other methods are available for communication?
Is it possible to run a Flex client in IntelliJ internally and have it talk to a separately deployed server instance? The server's a java webapp. This will make developing, especially debugging, much easier. What I'm trying to avoid is having to rebuild and redeploy the webapp to get the updated Flex code in it. I want to just build flex and run it against the server.
The flex client is embedded in an HTML page on the server, so in production the users access the client by going to a web page. We're using GraniteDS if that's important.
Update
I'm managed to cobble something together, but it's ugly.I made a copy of our wrapper HTML page and fixed the links to refer to the SWF in target.I setup the IntelliJ run config to point to that HTML page.I set the 'Place SWF file in a local-trusted sandbox' to true
Hardcoded the {server.name}, {server.port}, and {context.root} values in the service-config.xml GraniteDS config file to localhost, etc.
I can mavenize #1, but #3's isn't really a permanent solution. That part is still a problem because I can't check this in.
how can I find on fms server that client disconnected if if client disconnected due to power cut off. I client manually close the application then onDisconnect on server is called but if due to power cut off it does not called.
I am in a situation where user gets the cars data from the database based on the selection and displays it in datagrid like below ( for example)
Company Model Year No GM Chevy 2010 10 GM Chevy 2009 5 GM Pontiac 2010 12 Honda Civic 2009 12
and there will be a link next to datagrid to get Pie chart based on the data displays in the data grid . The pie graph should display grouping by company and the count . I mean for the above example that should give with two pie items , one for GM showing the number of vehicles ( in this case 3 ) and Honda showing the number of vehicles ( in this case 1 ).
I thought of getting it from the database by querying and grouping it .But here the problem is after getting the data above in the datagrid user can able to filter at client end ( By year or model ) and can say get graph . This time that should only display the graph for the data visible in Datagrid .Grouping on database for every operation is becoming expensive. Since we have already data available at client end , is there any way to group it at client ..?
I am using AS2 in flash CS3. I am trying to set up a communication between a flash client and a C# server. I would like to know if Flash allows me to perform XML serialization in the way that C# does. This is because I would like to use the XMLserialization class in C# for passing of data. If this is not possible, what other methods are available for communication?
I have an actionscript class that serializes and unserializes data compatible with php's serialization functions. I expanded it to support binary data but now the unserialization does not seem to work. For example, this data is not unserialized correctly: