UI design requires combining art and programming so you get a synergetic plus, not just a compromise.
Probably the classic is The Design of Everyday Things by Donald Norman. Add to that Jakob Nielsen's works - though they are mostly web-centric, and he had to correct some of the early truths because user behavior and training changed.
Cognitive Load Theory. It's a very functional model of the human brain for UI, and is a good decider between better and worse. Can't recommend a book, unfortunately.
Don't skip art. While I don't think going to art school is enough (sorry, David...), knowing more than you need for your day-to-day-job is the key to interdisciplinary fields. Art is the source for a deeper, more obscure pleasure in UI.
The renaissance was the first period that "discovered" the modern human both as object and as receiver. From there to the early 20th century (where the artist started to define what atrt is - and the human as receiver fell out of the equation) there's a lot to learn: how to create emotions, how abstractions work, what we need to recognize. Study the huge pool of masterpieces that is already out there, classified and analyzed.
Art, as UI design, is often perceived as one way - mostly presentation, but is really two way - an interaction.
Flash seems a good environment indeed. I can't make recommendations about flash books or flash software, I'll let others do that.
The single best, most important thing you can do to learn to become a designer is watch real people (not you, not other engineers) use real software. Read help forums. Usability test other people's software. LISTEN, like, really understand, what they're trying to do and what their goals are. Give them software that supports what THEY want to do.
I suggest starting with Jakob Nielsen:
Other great books:
Then you need to pick up functional skills in design — that's visual design, wireframing, probably some coding (for prototyping purposes), graphics production.
As with any topic, get your hands on as many resources as possible.
My most recent addition to my pile of books is Designing Interfaces Patterns for Effective Interaction Design by Jenifer Tidwell. Links: Official website and Amazon.
I highly recommend it: it describes user interfaces in patterns (something that we are familiar with).
A few titles from my book shelf:
I could list more titles, however the above will get you started.
Possibly a bit Off-topic, however I cannot resist as this is an area that I know.
If you have the opportunity, talk with your users (or even better sit down with them as they work). It is the best research you can do when trying to improve usability of your software.
If you want to measure your usability check out running System Usability Scale test (commonly referred to as SUS scores). Link 1 and Link 2 (PDF)
Well, a long-standing favorite specifically for user interface design is Alan Cooper's About Face. It should touch most important topics when designing Windows desktop applications.
Then there are also various UX patterns which are well-presented in Quince (needs Silverlight).
Jef Raskin's The Humane Interface is also rather good, but very radical in his ideas. Still, this book points out many fallacies in modern UI design. If you need to stick to the WIMP world, then following his suggestions might be a little hard as he tends to suggest to overthrow everything we're used to. But well-written and good for provoking thoughts, even if you don't follow all his advice.
As for books/articles on usability in general or on slightly different topics:
grid systems http://ecx.images-amazon.com/images/I/51kcWOOyUoL._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA240_SH20_OU01_.jpg
thinking with type
thinking with type http://ecx.images-amazon.com/images/I/51XtwgtqLDL._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA240_SH20_OU01_.jpg
stop stealing sheep
elements of typographic style
the design of everyday things
the humane interface
It is not sufficient to make you an experienced designer, but it is a serious start towards thinking more critically about what makes a given design good or bad.
A resume, when design:
1. Use both knowledge in the world and in the head.
2. Simplify the structure of tasks.
3. Make things visible.
4. Get the mappings right.
5. Exploit the powers of constraints-Natural & Artificial.
6. Design for Error.
7. When all else fails, standardize.
There's a lot of books in the matter of UI but they can fall either in the philosophy side or either the personal taste of the writer.