On 2/3/06, Andreas Rønning <[EMAIL PROTECTED]> wrote:
> Hi Anggie, haven't seen you active on this list, so i guess this is
> welcome as well..?

Hehe :) Yes, Andreas, thanks so much. I've been lurking for a few
months and it was my first post.

> I'm not an expert by any standard, but i do have close to 7 years of
> practical Flash experience paying my rent, so at the very least i guess
> that makes me a professional :)

7 years? Wow, you're lightyears ahead of me :)

> When i write these things i tend to go off on a tangent and start
> writing about horses and the gnp of the moon or something, so in
> advance, i apologize for any lack of clarity.

LOL

> Since Flash 5, i have made it my mission in life to never break any of
> the following rules:
>
> * Don't paint yourself into corners - Make sure what you do is flexible
> enough so that the client spec has some lebensraum
> * Don't put code in MovieClips - Debugging hell. Total terror to suss
> out some runtime errors if you have what you call MovieClip spaghetti.
> Sometimes even easy to forget about MC script entirely, which is.. bad.
> * When possible, keep your code externally and #include. Having to click
> on that "actions" frame and pressing f9 to bring up the script editor is
> 2 steps too many. I prefer to alt-tab between Flash and some external
> editor. It is no secret that the Flash IDE isn't the scripter's best
> friend (although it tries valiantly). My vote goes for PrimalScript
> (www.primalscript.com). It's a little pricey but i haven't really seen
> better.
> * Comment informatively and with clear intent, especially when working
> in teams or with something you'll come back to later.As someone else
> stated, don't overdo it, but comment where clarity is needed.
> * Some guys i've worked with think this is a little extreme, but try to
> avoid using frames at all. The longer your root timeline is the more
> convoluted your application gets. The abstraction that timeline script
> adds to your application is something i always personally found a little
> awkward to deal with (When i declare a function on frame 10, is it
> available in frame 1? When the movie replays, will it THEN be available
> at frame 1? What happens when it's redeclared in the next frame loop?
> etc). Some use frames for graphical states (for instance frame 1 is
> login, frame 2 is "login accepted" sequence, frame 3 is "login failed,
> retry?", frame 4 is chat UI), but i prefer to draw everything
> dynamically and keeping the stage resizable. Partially because it's
> smart, but mostly because i simply CAN, and i can't think of a reason
> not to, unless i have 4 hours to deploy it. Pure animations in clips is
> fine, Flash is a rockstar animation package. But keep that _root clean.
> Your brain will thank you.
> * Maintain smart variable naming conventions. Quick, consise,
> descriptive. Something you can understand yourself. Don't overdo it, if
> all your loop does is iterate through an array, a for(var i =
> 0;i<100;i++){} will do. In this case, for(var counting=0) etc is
> overkill, too many letters. Your brain hates letters! Argh! Reading is
> work, keep it to a minimum, but keep that minimum pretty generous. No
> one way to do this but i prefer names such as userName, isVisible,
> isMicAvailable, playerPosX, planeWidth etc. For instance, to some
> extent, it's obvious that the variables starting with "is" are booleans,
> making if(isMicAvailable){} a little more readable. A lot more readable
> than if(micStatus) or if(microphone).
> * Use local variables. Make your functions eminently clean. Don't leave
> stuff lying around, poisoning the air. Write functions that take a
> value, duplicate that into a local variable (especially in the case of
> arrays which are almost always references), and then work with that
> local value before returning a result. Use the return statement. As with
> coworkers, it's always nice to have functions that talk back.
>
> In addition, since MX2K4:
>
> * Use strict type checking. This gives a 2fold bonus: You get a "free"
> comment to your code that's immediatly clarifying, and you get the
> debugging assistance and hand-holding of a compiler that kind of knows
> what you want to do with a variable. This, much like interfaces in OOP,
> is a great way to hold yourself by the neck and keep yourself straight.
>
> On the subject of reusable code, yes, whenever possible. AS2 and OOP
> really brings this to the forefront. An example is a simple static class
> i wrote that does tooltipping. Whenever i need a tooltip on mouseOver
> right now, i'll drop ToolTip.display("This is the friendly assisting
> text"); in the onRollOver and ToolTip.remove onRollOut etc. Since
> writing that stupid little class, i've used it on 3 apps, and i've felt
> a warm fuzziness every time it just worked without screwing with the
> rest of the application. Of course there are limits to just how reusable
> code is,and IMHO there's such a thing as a needlessly "smart" solution.
> I've seen convoluted OOP that makes total sense for scalability, but
> makes almost no sense from an uninitiated developer's point of view. If
> you have to learn the entire class tree to incorporate it into your own
> work, that's a lot of reading up to do.
> Some people like to abstract their code down to the smallest classes,
> like a "user" class that just has the variable userClass, a "namedUser"
> extension that adds "userName" and "userAge" or whatever, and then
> building it up like that. It looks... Retarded. If you're going to do
> OOP, learn a design pattern. My favorite is ModelViewController, but for
> the most part with classes i wind up with an eventbased model. Whatever
> suits you best, but please, swallow your pride and learn conventions,
> smarter guys than me have done OOP for probably longer than i've lived,
> so i'm not about to pretend i have a better methodology :)
>
> Good OOP conventions is a TRUE can of worms though. I'll leave that to
> the brainy folk.
>
> To solve your nuttiness issues with depths and levels, i have one piece
> of advice:
> Don't ever, ever use getNextHighestDepth();
> Declare depth variables such as backgroundDepth, cloudsDepth, UIDepth,
> horseDepth (i had to), and explicitly set them. Referring to depths by
> names like this is just a nice little cushion that reads better.
> I like hardcoding depths for things like UI elements, like a custom
> textbox+scrollbar component with a resize handle and a close button and
> such, like a little window type thing. There's no reason every depth of
> that component needs to be set dynamically, so don't.
>
> To summarize everything into something a little more generic:
> Be gentle with yourself. The smarter you think are doing it, chances are
> you're doing it too hard :)

Mate, your lengthy worthy advice hits my problems precisely!
That's exactly what I need. I'm gonna print out your post and keep it
as reference.

Thank you very much,
--
Anggie Bratadinata
Graphic|Web|Flash
Jl. Raya Langsep 21
Malang - East Java
I N D O N E S I A
www.ibshastautama.com
www.nextrand.co.id
_______________________________________________
Flashcoders mailing list
Flashcoders@chattyfig.figleaf.com
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Reply via email to