Sean,

 

I recently had a project that I had to implement the Clone Method when
defining a custom cairngorm event.  I downloaded the source code to the
flex 2 Cairngorm store and looked at how they were doing the custom
events.  In that project the clone event was simply creating a new
instance of the Event.  So if your custom event class was defined as
public class GetProductEvent extends CairngormEvent with a public var
ItemID:int, the clone method was return new GetProductEvent();

 

I created all of my custom events in this manner and initially had no
problems dispatching my events and assigning my event the ItemID.  

 

But then I ran into a problem.  In my app I wanted to save the last
attempted event in case the user's session has timed out.  If a user
times out, I wanted to re-dispatch the event once they log back in.
This was important in my app because users could be doing a lot of
things in the Flex App without ever hitting the Coldfusion server, but
then they would lose all their work when they went to save.  Since the
Coldfusion server would have timed them out after 20 minutes.  

 

So I created a model variable tempPendingCommand:CairngormEvent and
would assign the custom event to this variable before dispatching it.
After the event is successful I clear this variable out.  Upon testing
this approach, I noticed my data (ItemID) was null when the event was
fired after a timeout and successful login.  It took a while to track
down in the debugger and it came down to the Flash.Event Clone method.
The override clone method I defined had no idea there was an ItemID.
Luckily, the fix was easy.  I changed my GetProduct clone method to;

 

Var tempGetProductEvent = new GetProductEvent();

tempGetProductEvent.ItemID = ItemID;

return tempGetProductEvent;

 

This solved the problem.  So it seems it is only an issue if you try
caching or assigning your custom event to another variable.  If you are
directly dispatching the event, the clone method is never used, at least
in my case.

 

John

 

************************************************** 

 John R. Piotrowski 

 Programmer Analyst 

 Wharton Computing 

 Email: [EMAIL PROTECTED]

**************************************************

 

________________________________

From: flexcoders@yahoogroups.com [mailto:[EMAIL PROTECTED] On
Behalf Of Stembert Olivier (BIL)
Sent: Friday, March 16, 2007 2:49 AM
To: flexcoders@yahoogroups.com
Subject: RE: [flexcoders] Cairngorm: When / why override clone in Events

 

Sean,

You can read in the Flex doc:

There are two utility methods in the Event class. The clone() method
allows you to create copies of an event object. The toString() method
allows you to generate a string representation of the properties of an
event object along with their values. Both of these methods are used
internally by the event model system, but are exposed to developers for
general use. For advanced developers creating subclasses of the Event
class, you must override and implement versions of both utility methods
to ensure that the event subclass will work properly.

Nothing to do with Cairngorm.

Rgds,

Olivier

 

________________________________

From: flexcoders@yahoogroups.com [mailto:[EMAIL PROTECTED] On
Behalf Of Sean Sell
Sent: Wednesday, March 14, 2007 8:45 PM
To: flexcoders@yahoogroups.com
Subject: [flexcoders] Cairngorm: When / why override clone in Events

In one of the Cairngorm examples I learned Cairngorm from each event had
defined an override for the clone method (of Flash.Event). Does anyone
understand haw and when you should do this? Does Cairngorm clone the
events behind the scenes somewhere that requires this be done?

--Sean

 

________________________________

Be a PS3 game guru.
Get your game face on with the latest PS3 news and previews at Yahoo!
Games. <http://us.rd.yahoo.com/evt=49936/*http:/videogames.yahoo.com>  

---------------------

An electronic message is not binding on its sender.

Any message referring to a binding engagement must be confirmed in
writing and duly signed.

---------------------

 

---------------------

An electronic message is not binding on its sender.

Any message referring to a binding engagement must be confirmed in
writing and duly signed.

---------------------

 

 

Reply via email to