I am creating a 2D game which I wish to run cross platform (on platforms such as Windows, Mac, iOS and Android as the main targets) and the engine I use needs to be open source. The main goal is to have the most code portability (possibly through scripting).
I would prefer to do this in C# but using another language is not a massive issue if I have to.
I have considered MonoGame and flash using the Flex SDK as they both claim to be cross platform and open source.
Which one of these would be a better choice considering my criteria? Or would another game engine/library be more suitable?