Drawing Canvas is not a good choice for animations. You need to make a snapshot after every frame and save it in an array, then restore it from the array - these are very slow operations. You can also save the canvas image in BinaryData, but there is no way to load it back into the canvas.
Have you tried Game Recorder object?
Actually, I found another solution is recording touch input and Im able to replay the input on canvas by user using array and frame value.