I've actually been looking into this a lot over the last few weeks. There are a few options:
-Unity: free now for the base mobile product. Looks like you use the unity editor, build out your games there and then it generates code based on the platform. You have to write code for the game objects in the editor using C# or Javascript.
-Cocos2d-x: Free game engine, looks like you can write code in C++ and then port it across all the platforms since they are all capable of building C++ code.
I'm sure there are more out there but I was between those two and SpriteKit. Since I primarily do iOS I decided to go with SpriteKit (has some really cool features you can check out if you're an Apple Developer, plus great documentation and pretty straight forward). I still really like Unity but I'd also be doing all the artwork by myself and Unity seemed like it would show off poor art quality more than a 2d engine.
There are some pretty nice Unity tutorials you can check out on YouTube to get a feel for it. I think if cross platforming was my biggest concern I'd dig deeper there first and see if it was a fit.