In certain areas OOP has had a good history, mainly because it has become a craze which has pushed a lot of development into it. While this may be good for Flash, which I assume is prodominately used for animation and games, it is not so good for others. Functional, logical, procedural, generic and metaprogramming are still very important (procedural is a necessity even with OOP currently).
In fact, I just thought of a very good thought about OOP. It is almost dependant on procedural programming. A class isn't a class without methods, its a structure.
For a language to become completely object-orientated, everything from If statements to boolean operations need to be encapsulated in classes but you can see how ridiculous this is. Basically, even if AS ever becomes COMPLETELY object-orientated, it will have shot itself in the foot as it will have become tedious to create a new IfManager object and then ask it to run this method in this class if one value is {insert operation} than the other. This highlights that OOP will not nor ever work efficiently on its own.
After all that though, I agree it can bring out good results but I believe that that is also due to the amount of education that is spent on it. It is drilled into new programmers now to use it constantly and, as you will know, there are awful OO programs out there that could do with a bit of, lets say maintenance.
That was a bit of a ramble but what I mean to say is, and this is good advice so if you read anything, read this.
Find a paradigm that works for you. If concrete factory design patterns work for you, use them. If you prefer to split your programs into functions that each do a specific process, do that. Don't use a coding practise that does not work for you, otherwise your programs wont either. An application will only ever be as good - or as bad - as its programmer.