ForumsProgramming ForumGood Programming Technique 101

82 104033
LonLonRanch
offline
LonLonRanch
172 posts
Nomad

Hey Guys, I'd say I'm still fairly new to the forums but I'm checking more and more often, and one thing I have noticed is that the Programming Help section isn't very active. So I thought I would add my 2 cents and share some of my AS programming experience.

I've been programming actionscript for about 3-4 years now and have even been through 2 ArmorGames challenges. I've been asked by a lot of people for some coding help over my time and, well, I see a lot of times that I code quite a bit differently then they do, and a lot of that is because they are:
1.Still new to Actionscript
2.Have learned only from online tutorials
3.Are used to coding with what works instead of what works best.

So, what I decided to do here is to share with you what I have learned over the years to be Good Programming Technique. So before I start this first one off take note:
This is being coded is Actionscript 2.0 (I still have to fully embrace AS3 although I highly encourage learning it)
Also, this is what I have personally learned from my experience, you may disagree, that is fine, actually if you think I'm wrong let me know so that we can all learn because there is no reason to code ONE way.

Ok so after that intro this is what I have to share with you.

Coding on the Main Timeline

The more complex your game gets, you're going to have more MovieClips, Layers, Frames, lines of code, etc. And with that, it will be harder to organize everything. Which is why it is always good technique to code on the main (or _root) timeline. Now some of you may not even know it, but you can actually control every aspect of your game by coding into the the first frame (not movieClip, frame) of your game. For example, on my latest game I had right around 2000 lines of code on the very first frame.

2000 lines on the same frame!?

Yes. You may be thinking right now, How? Well, there are 2 very very important coding methods I use when I program and they both make use of that frame. The first one, which I'm going to explain on this post is calling movieClip's (onEnterFrame) method from the main timeline instead of on the instance of the movieClip itself. I'm sure you are very used to coding with:
onClipEvent(enterFrame) -What I'm telling you is that I don't do that.

You can do onClipEvent(enterFrame){ outside the movieClip?

Yes, yes you can. And here is how:

on the main timeline for a movieClip with the instance of myClip you would have something like:

myClip.onEnterFrame = function():Void{
Which would be the same doing a onClipEvent(enterFrame){ on the myClip movieClip, you just have to make sure you have the instance name (in Properties) set to 'myClip' and that it is on the main timeline.

-If it is not in the main timeline, lets say its in a movieClip called 'otherClip' you simply have to add a bit of code:
otherClip.myClip.onEnterFrame = function():Void{

Umm ok, but I still don't see why you do this...

Fine fine, I understand this might be a little confusing at first, but in time I'm sure it will make sense, it might take a little trial and error. The reason I say it is good technique is that having all of your code on the main timeline makes it very easy to keep your code organized and easy to locate. If you have several movieClips/Frames/Layers in your game that you want to apply code to, it going to get confusing. Where did I put that clip? Where is the code that deals with the hitTest? What frame is it on? etc, when you code in one place you don't lose, forget, or repeat code. Its all in the same place so it is easy to work with, and if you ever code with with someone else it will make their lives a lot easier because they won't be looking all over for code they don't even know exists.

Alright, so just a few notes to end on: (gosh this post long, sorry)

It is always a good idea to code on the main timeline.
You can save lots of lines of code and better organize your code by calling .onEnterFrame functions (functions are a very very big part of coding as well, if you don't know about them I'm sure I'll make a topic on it someday)
Even if you code AS3 you can still practice this.

Let me know if something doesn't make sense, I'm sure it may be quite confusing.

  • 82 Replies
Blackbeltr0
offline
Blackbeltr0
769 posts
Jester

HOW DO U MAKE A NEW FOURM POST????

Darkroot
offline
Darkroot
2,763 posts
Peasant

At first ... i want to make a game ... but after this ... I QUIT !!
It's too complicated for me


Nothing in life worth pursing comes easy my friend. Though it not for everyone but if everyone quit there would be no games. Sometimes you just have to buckle down and mow through the hard times to get to the good times.

hey i am trying to start a game myself but i dont have anyone to help me cause i dont know how to code but none of my friends would help me so i want to know if you can help me?


Maybe if you don't know how to code you shouldn't be trying to make a game? It's like a kindergarten student trying to do calc, they will get there eventually but not before doing all the stuff in the middle. I recently made a post on how to start learning to program. It's apparently a sticky now so you can check it out. I provide mostly free resources that should be enough for motivated people.

I just looked at the original post, and well, in AS3 you should really have no code on the timeline.


Technically yeah but it's not like it won't work. Personally having all the code on the timeline and having all the code in a single external as3 class are just as bad. It just turns into a wall of code at that point.
mightybob
offline
mightybob
360 posts
Peasant

Although coding inside of frames is good for some games, I highly recommend to put code inside of movieClips for platform games.

Why do I say this? Well, in a platform game your going to have enemies/baddies to stomp or something to make a challenge in the game. And if you code in a frame, this is what you'll have to do for EVERY enemy/baddie:

function onEnterFrame() {

If(player.hitTest(enemy)==true) {
//what you want to happen
}

}


So I know what your thinking: that's not a lot of work!

But let's say your average level has 10-15 enemies. That could mean 100 lines.

Same thing for if you have springs in the platform game, or anything else of large quantities.

If code is inside an object, you can just duplicate the object, place, done.

Flash when exporting swf won't care about duplicate vars or anything like that as long as they are in separate movieClips.

So pretty much, code inside movieClips is best in most situations, and quoting what the original poster said &quotutting code in timelines can save so many lines".........

More than half the time it won't.

weirdlike
offline
weirdlike
1,299 posts
Prince

//var name all children on level as i
for(var i:int=0;i

weirdlike
offline
weirdlike
1,299 posts
Prince

eek another case of symbol misinterpretation

//name all children on level as i
for(var i:int=0;iIsLessThanlevelMC.numChildren;i++)
{
//make all children objects
var object = levelMC.getChildAt(i);

//point to enemyMC
if (object is enemyMC)
{
//function
}
}

arnavkumartechno
offline
arnavkumartechno
5 posts
Nomad

Let me know if something doesn't make sense, I'm sure it may be quite confusing

I agree but because i am new programming world.
Showing 76-81 of 82