This looks like its caused by the animation updating before your function gets called. i.e. its switched to the next frame on your old animation, before your function call to change the frame tells it to change animation, and so it will only update the next frame.
Anyway to fix it you can try one of a few things.
First, in tk2dAnimatedSprite, change Update to LateUpdate and see how that works.
Also, if you know who is calling play on the sprite (if its another script which you have control over), in Edit > Project Settings > Script Execution Order, make sure that script is BEFORE this one.
Hope that helps, at least to narrow down where the problem is occuring.