With Charlie announcing his break up with Flash and Aral commenting on the seriousness of it, I thought it would be a good time to mention a few things that I would like to see in the next iteration of Flash to prevent this from happening in the future.
As a developer dealing with Flash on a consistent basis, there are some things that I feel Macromedia can improve upon in the next version. I only have a few things on my list, but I'm hoping other people from the community will chime in and add to it. Come to think of it, Ted mentioned something as well that is also #1 on my list.
Here goes!
- A Threading engine. This can be as simple as just having a separate Data thread, but something needs to be done about the 15-second timeout besides just increasing the length of it. Whenever you deal with large amounts of data you get the nasty side effect of having your entire UI become unresponsive. For an application, response times are critical. If Flash is looking for more and continued success in the RIA market, there needs to be a way to keep the UI responsive at all times and avoid script timeouts when dealing with large amounts of data or doing intensive processing. Having to create "safe loops" is a workaround that should not be necessary.
- UI Components/HTML support. I'd love to have the ability to create native OS widgets inside of Flash, eliminating the current v2 component set almost completely. By native, I'm thinking of Java SWT but I think that's a little unrealistic for the Flash Player. However, if you need to create an input field wouldn't it be nice if it was as simple as using the input tag? The TextInput component weighs in at 24k, and that’s a little hard to swallow - especially since Forms was a big buzzword for MX 2004 and you create those input forms with a handful of the v2 components... Also, do I even need to mention support for HTML tags like sub and sup?
- Synchronous calls for fscommand and remoting/webservices. Rather than having to deal with callbacks, it would be nice to have the option to specify execution mode (I'm thinking C# here). I would like the choice of either making a synchronous call to a remote server and have Flash block until a result is returned, or making an asynchronous call and be notified of the result via a callback. Dealing with a lot of callbacks can be cumbersome.
- Operator overloading. This is an enhancement to the ActionScript compiler, and is somewhat linked to method overloading. I would like to have the ability to define a method such as operator+, and have that called implicity whenever Flash came upon code like "classA + classB." If used correctly, the readability benefits are wonderful. Of course, I come from a C++ background, so I'm used to having this functionality available.
These are just a few things I'm thinking about . Some of what I'd like to see is a little ambitious, but I'm hoping this will at least spark some discussion.
I'm also not sure that I understand Macromedia's vision with Central, but I'll save that for another day...

22 Comments
good initiative, and i agree with your 4 points. especially the creation of LIGHTWEIGHT components is something that should be considered, or even better waht was proposed: native OS widgets.
Posted by: Flasher | February 13, 2004 9:54 AM
Subscript and Superscript capacity for dynamic text fields or through HTML tags.
Dynamically load PNG files.
Posted by: Lar | February 13, 2004 10:48 AM
What I've been thinking about lately is how when I focus on a Flash object in my browser, my normal browser keyboard shortcuts stop working. This is probably not possible without a huge headache, but it would be great if there was a way to
1. Check if an AS listener already owns a key combo.
2. if not, pass the key event up to the browser or whatever the flash object is embedded in.
I use Firefox with heavy keyboard shortcut combos. Flash really annoys me in how I have to focus outside of it in order to do things like ctrl-t to open a new tab. I like to use my mouse as little as possible, and I know some internet users out there don't even understand the concept of focus. Now that swf has scroll wheel support, I think this is the only issue that prevents a seamless smooth experience.
Posted by: dylan | February 13, 2004 11:23 AM
@lar - I'm in complete agreement. Dynamically loading .png and even .gif files is a great suggestion. The workarounds I've seen are creating .swf's on the fly from .gif image files, and then loading the container .swfs at runtime, or running a script that converts a .gif to a .jpg on the fly.
@dylan - The browser keyboard focus has been an issue for a lot of people. It's actually been reported as a bug to Mozilla, since in IE keyboard shortcuts seem to work alright:
http://bugzilla.mozilla.org/show_bug.cgi?id=78414
http://bugzilla.mozilla.org/show_bug.cgi?id=233159
http://bugzilla.mozilla.org/show_bug.cgi?id=233243
Hopefully it will be fixed sometime soon.
Posted by: darron | February 13, 2004 11:33 AM
Actionscript threads would be a vast improvement over the way things currently work, where we need to watch for safe loops and occasionally have to deal with bottlenecking in the renderer. I really like Ted's idea of adding continuations to Flash to support this.
File upload capability would be nice so we don't have to resort to ugly hacks in order to bring up a HTML-based file upload form.
Proper RTL text-editing support for Middle Eastern languages. This seems to be a perennial issue.
Improved responsiveness with large numbers of textFields. I've been having problems building forms in Flash with anything more than a handful of textFields at once since Flash 5. Browsers work wonderfully with lots of input fields, it'd be nice if Flash did too.
Run-time action block generation, e.g. a runtime version of __bytecode__(). This would let you define new functions on the fly, though probably only via SWF bytecodes and not Actionscript due to the way the player's built. Imagine dynamically optimized loops. :)
Lastly, pixel-addressable canvases. Right now, it's basically Director or Java (Processing is essentially an abstraction layer for Java). It'd be nice if Flash can join the pixel-pushing game.
Now for the IDE side of things:
Additional C/C++ preprocessor directives for the compiler would be nice, say #define, #undef, #if, #else, #elif and #endif.
I frequently use bit masks and ascending numeric conditions for values, so #define would be very nice for writing pretty code without having to pollute the global variable space. The #if conditionals would be very handy for writing .AS files for use in several different by closely related projects, e.g. outputting code for different versions of the Flash Player.
Also, an optimizing compiler. From inspecting the bytecode output of the current Flash IDE, there's a good number of well-known optimizations that the compiler doesn't seem to be using. From what I know from hand-optimizing SWF bytecodes, I suspect we could probably stand to gain a 5-10% boost in performance if the Flash compiler optimized code more aggressively in the next IDE.
Posted by: Jim Cheng | February 13, 2004 12:59 PM
Superscript and subscript... I was ranting about this same thing months ago:
http://www.oscartrelles.com/blog/archive.php?post_id=1065632604
It maybe looks like a small thing, but it's huge when you deal with lots and lots of dynamic text which includes references and/or footnotes. In general, HTML support needs to be improved a lot in the player.
I'm not so sure about your idea for the components. I mean, v2 components are already a step toward an ideal. Sure they are still too heavy, but at least they are easier to manipulate. Personally, I would prefer to completely break with MM's proposed visuals, and transform Flash components into "pre-packaged functionality" only, and let designers/developers take care of the visuals. In my experience, that is the way to go, but it shouldn't have to be an exclusive choice, I mean, you should be able to just drop a MM component when you are in a hurry and not concerned about file size, aesthetics, etc.
Posted by: Oscar Trelles | February 13, 2004 3:35 PM
All great things, I think flash could be the best if only it took on board the suggestions of developers like yourselves more readily.
I personally have a few things I'd like to see improved, first is the poor performance when handling even slightly complicated graphics or alphas. I hope the threading suggestion would improve that too.
Security would be nice too - options to secure files to a greater extent since I'm not a fan of decompilers even tho as a student I could stand to learn a lot from tearing open others swfs. Don't think the player could do this tho.
Also the two other things I'd like to see I think have more to do with flash in general rather than just the player - better support for remoting with php and mysql - and some more advanced vector effects (blur etc.) to bring up flashes visual performance to that of the speculated longhorn renderer avalon and programs like illustrator. Obviously this would require a more 'speedy' player.
Oh native 3D support would be nice too, or at least 3D vector transformations, but flash isn't about that really, we have shockwave for 3D games etc.
Posted by: Jon B | February 13, 2004 4:11 PM
Very interesting wishlist.
My wishes would be:
First: Right-To-Left support in Flash Player like IE's full supoprt, so we can make applications for Middle East. (This was my wish since version 5!)
Second: Right-To-Left support in the IDE.
Third: Improved performance of the IDE when testing a movie! Currently its very cumbersome to test forms and slides movies, and also using the import statement.
Posted by: Behrang | February 14, 2004 1:41 AM
7.5 ;)
First of all.. give the Flash team more time to round out their work before releasing. MX 2004 is an amazing product but it was released way too early. I could have easily waited til March for this release. Release a public beta of the IDE if need be.
Solid Documentation.
Posted by: Paul | February 14, 2004 2:03 AM
Matrix based setTransforms would rock. So you could use the same kind of parameters and matrix object you would with beginGradientFill.. but you would be tinting a clip instead.
mc.setTransform( "linear", colors, alphas, ratios, matrix );
Posted by: Paul | February 20, 2004 2:54 PM
Same old wish lish to Macromedia:
A better documentations and it samples!!!!!
What I've seen so far, is like they write the documentation with assumption most of the users have the same brain level with theirs.
Posted by: gutted | February 26, 2004 3:38 PM
I need to create a image file from flash application at runtion in any format either .png /.jpg/.gif
Please help me out.
Posted by: Binaya | February 27, 2004 5:58 AM
For UI Components/HTML support, I don't think this should be done... You can develop a component that read, parse and draw such things automatically. The Flash Player must stay as light and independant possible...
A Threading engine is interesting, but it's also possible to simulate it when you know that a particular script is time-consuming. Use a setInterval to distribute your script over many frames, and use a "preloader" to inform your public that something is being done.
I think that the best thing that could be done in Flash 8 would be to add a Library object to every MovieClip, so that it would be possible to download new assets at run time. For example :
myMovie_mc.library.loadMovie ("assets1.swf");
myMovie_mc.library.loadMovie ("assets2.swf");
// The bytesLoaded and bytesTotal of the library would be updated directly,
myMovie_mc.library.getBytesLoaded ();
Posted by: Mathieu BSL | May 6, 2004 3:04 PM
Save dynamic movies at runtime as swf that can be reopened so the editing session can be continued with all the same capabilities as with the originally published swf. Valuable for editor style applications that allow the user to interact with the movie, think of text and image editing for a concrete model.
Posted by: Brad | May 15, 2004 9:55 AM
I'd like to see the v2 component architecture included in the FlashPlayer so that we could use the components with 0 filesize increase.
A lot of stuff was added to the V6 and V7 player that I personally won't use (video stuff for example) that bloated the filesize - I'd rather have had the V2 component stuff put in there
Posted by: Kev | August 4, 2004 7:08 AM
Simple things for the non-coder:
Bitmap antialiasing, giving the ability to resize a picture inside Flash without making it ugly.
And also a "restore to default size" function to bitmaps you had already resized.
Posted by: Antialiser | October 18, 2004 6:36 AM
Of all the requests from here i tend to some more realistic and that would follow macromedia line of development, beeing focused mostly on the designer part.
Flash player 8 needs :
1) Upload/download (like Central now has)
2) Pixel accessible canvas, as mentioned.
- graphics algorithms for the canvas.
- pixel transformations to images.
- basic 3d api.
Period.
Explained :
1) A clear must.
2) Imagine how many neat things we could do as designers?
Imagine winamp like visualisation plugins applied to your applet, imagine melting effect of v2 components so that they dissappear.
Imagine images beeing swallowed by an Paint like application magic wand.
BASIC 3D Engine - comme on Macromedia, you always tell us that flash isnt for 3D and that is Shockwave. Couldnt you guys just implement basic 3D Api .. thus going to the road of unification of multimedia players ?
Shockwave is 10000X faster than flash but 10 the power of -100000X the popularity.
Posted by: iongion | October 23, 2004 5:01 AM
3D, Linux version...
Posted by: Philip "pips" Seyfi | November 20, 2004 11:24 AM
I come from more of an Art / Game developer perspective. I love the accessability to people like me with limited programming backgrounds, however, the hit you take in the frame rate department for developing in flash is a big drag.
I was pleased with the improvements in Frame rate for Flash MX, but it still isn't enough.
Again, I am relatively ignorrant when it comes to programming outside of flash, but it seems to me that Flash takes at least 10 times more power to run grpahics than if I wrote it in a nother language.
If it is a matter of makeing the flash player a bigger download to make it more efficient, it's worth it.
Maybe if you could choose to compile to a more efficient stand alone application?
Also Flash takes a big hit in Frame rate when played in a browser window. Perhaps I am ignorrant to an available solution here.
Multiplayer
I want to make multiplayer games, but the tests I ran with my friend showed Flash only looking for external info 2 or 3 times a second even though we were sending it 100 times more often, but perhaps I am also ignorrant to an available solution for this as well.
Cheers,
Scott
Posted by: Scott Stoddard | December 13, 2004 12:05 PM
A bilingual right to left support.
I feel I'll wish this for long time.
Posted by: Ahmad | March 4, 2005 5:21 PM
+ ability to call user-defined Flash methods from browser/JavaScript
the predefined set of methods is insufficient, it desperately lacks a function like this:
callUDFunction('flashFunctionCallableFromBrowser', 'param1', 'param2');
Posted by: Yaroukh | June 16, 2005 8:23 AM
I would really like to see in the next flash generation:
- A coloured layer scheme, not only that little square on the left hand side of the timeline panel, but the whole "layer";
- More than 8 channels sound;
- An Alpha Channel Mask;
- more design/illsutration tools (like some featured in Freehand)
- suport for dynamic loading gif/png
Posted by: André | July 16, 2005 12:21 PM