Recording user actions

J. Landman Gay jacque at hyperactivesw.com
Sun Feb 20 00:02:37 EST 2005


On 2/19/05 7:12 AM, Richard Miller wrote:

> I've got a user on one computer watching a video from inside of a Rev 
> application I've provided. They can draw objects (mostly circles and 
> lines) on top of that video while it is playing back in slow motion. I 
> need to record all of this drawing so it can be recreated / replayed at 
> a later time on a different computer. Not only does the motion / drawing 
> need to be recorded, but also the specific times at which the drawing of 
> the different objects occurred. I suppose, in some sense, this is an 
> animation.
> 
> The entire "marking up" session will not exceed 3-5 minutes.
> 
> How do I record this activity AND keep the file size down as small as 
> possible (as it needs to be quickly transmitted from the user who did 
> the marking up to the user that needs to view it)?

You could try writing a mousemove handler (or a "send in <time>" 
handler) that repeatedly checks the current tool, and if it is a drawing 
tool then have it store the mouse location every so many milliseconds, 
along with the currentTime of the QT movie, the current tool, and 
whatever else you need (pen color, linewidth, etc.) If the user changes 
drawing tools or creates a new object, add a blank line to the list you 
are creating. The list could be stored in a custom property.

Then for playback, you'd create a single polygon object. Read the list 
one line at a time and compare the movie time stored there to the 
currentTime of the movie that is playing. If the times match, set the 
points of the polygon to the set of recorded points that have been 
accumulated up to then.

You can use a single polygon object to simulate any number of drawn 
objects on screen. An empty line in the object's points list will cause 
the pen to "lift" and then set down again, effectively creating a new 
visual object. That's why your recorded list of points should include a 
blank line each time the original user changes tools or creates a new 
object.


-- 
Jacqueline Landman Gay         |     jacque at hyperactivesw.com
HyperActive Software           |     http://www.hyperactivesw.com


More information about the use-livecode mailing list