We use Hudson.
We are working on a Java/Flex application.
Ant is the build system. SVN the source manager.
We have a ant task for compiling the mxml and the actionScript.
Hudson is on a virtual machine, SVN on another, and the build are archived / deployed on a third.
Hudson call the ant task on due time. ( After each commit on the flex code )
No Unit test are call for flex. For java yes. But you can call FlexUnit ( or FlexMonkey ) throught a ant script as well.
After running the test, the build is deployed on another VM.
It's run with no pain. You just have to have a working ant task for compilling the flex part of your application.
If your using maven, hudson handle it too. He can also play .bat or .sh script and check the output.
About your choice between teamcity / hudson, i think the two of them are very close.