I think part of the problem of flipping card is that CCFlipY3D (or CCFlipX3D) and the RotateXBy or TO are always rotating about the point in the middle of the screen, its not taking account of the current position of the node.
I just want to share with you all that if you want to rotate about the current position of the CCNode via position variable, you can edit CCNode.m transform function:
if (rotation_ != 0.0f)
glRotatef( -rotation_, 0.0f, 0.0f, 1.0f);
change to: (basically just move to the origin, rotate, and move it back)
if (rotation_ != 0.0f)
{
glTranslate(RENDER_IN_SUBPIXEL(position_.x), RENDER_IN_SUBPIXEL(position_.y), vertexZ_);
glRotatef( -rotation_, 0.0f, 0.0f, 1.0f);
glTranslate(RENDER_IN_SUBPIXEL(-position_.x), RENDER_IN_SUBPIXEL(-position_.y), vertexZ_);
}
I could have use Anchor point instead. I think it would be nice to add this to the next version to take into account of the anchor point when rotating.