"James Miller" <ja...@aatch.net> wrote in message news:mailman.733.1331853568.4860.digitalmar...@puremagic.com... > > I hate the fact that Flash games are created the way they are. For > one, it's impenetrable to try and learn properly, I had so much > trouble figuring out how to do things properly, you can attach scripts > to almost any object, but sometimes it might be shared over all of the > same objects, and other times only on that instance, depending on how > you've placed them on the canvas. > > I probably wrote some terrible code when I started making Flash games, > and now Actionscript is so foreign to me that i can barely understand > where to start. >
Yea, Flash is just plain insane from start to finish. Even the vector/scene-editing GUI is awful. Christ, this is the company that's known for Illustrator: That's the one part of Flash they *should* have been able to get right! (I dunno, maybe the Flash IDE was just drowning in too much MacroMedia legacy?) One thing I learned though, is that if you're going to make something in Flash, your best bet is to use as *little* of what Adobe provides as possible: - Cover any APIs that suck with wrappers that paper over the suck (to the extent possible). - Don't use Flash's "frames" system: Just put your whole program in one "frame", and handle scenes manually by toggling the "_visible" attribute on entire groups of MovieClips. Do animation/tweening by using the timer APIs, a simple "lerp" formula[1], etc, stuff like that. - *Every* piece of ActionScript code embedded into your .fla should be *one* line: #include "realCodeHere.hx"; Store the real code in that *REAL* text file, under proper version control, and edit in a *real* text/code editor. Hell, even if nothing else, at least this make it possible to fucking *diff the files*! (*grumble*Adobe doesn't understand software developement*grumble*) - Abandon ActionScript entirely. Use Haxe instead, and use swfmill to embed assets. Now you don't need to have the Flash IDE even *installed*. Hooray! Every single one of those changes made an order of magnitude improvement for me. Even with the overhead of actually making the switches, it was well worth it: the initial overheads easily paid for themselves in both tangible and intangible ways. [1] A lerp function in Haxe, copied directly from my own production code (consider it "Do what the fuck you want" license), formula derived by just remembering basic high school algebra: class Util { [...] // Convert a value between two scales, using a linear interpolation. // To use as a traditional lerp: Util.lerp(normalizedValue, 0, 1, min, max) // To convert from farenhight to celcius: Util.lerp(degreesF, 32, 212, 0, 100) public static function lerp(fromVal:Float, fromA:Float, fromB:Float, toA:Float, toB:Float):Float { return toA + (fromVal - fromA) * ((toB-toA) / (fromB-fromA)); } [...] }