A Flash Developer Resource Site

# Thread: Making The Largest Of A Duplicated Movie From Loop In Highest Level ????

1. ## Making The Largest Of A Duplicated Movie From Loop In Highest Level ????

I have created creatures that get closer with scaling then when reached a certain size jump out at you. this creature mc has been duplicated with a loop to produce 3 , all with random scale rates. in a variable called growth

firstly how do I always make the largest on a higher level so it is in front of the smaller ones so it looks closer ?

they are created in the main timeline with
------------

for (i=1; i<3; i++) {
evilbogey_mc.duplicateMovieClip("evilbogey_mc"+i, i);
}

for (n=4; n<7; n++) {
microNinja.duplicateMovieClip("microNinja"+n, n);
}

-------
-------------
then have this on each Movieclip (evilbogey_mc and microNinja)
--------------
var attack = false;

function reset() {
this._x = (Math.random()*500);
this._xscale = 0;
this._yscale = 0;
attack = false;
growth = (Math.random(4)+1);
this.gotoAndPlay("start");

}
reset();
}
onClipEvent (enterFrame) {
this._xscale += growth;
this._yscale += growth;
_root.debug3 = growth;
if (this._yscale>=80) {
growth = 0;
if (attack == false) {
this.gotoAndPlay("attack");
attack = true;
}
}
}
on (press) {
this.gotoAndPlay("killed");

}

-----------------------
this sets the scaling up etc
SO i need to make the one growing fastest or the largest in FRONT all the time?????
HOW DO I DO THIS Ive tried swapDepths

Dave Mattock
dave@mattockgraphicdesign.com

2. ## swapDepths is right

You need to build a sort function, this is not tested, but it has the basic idea (look in the array reference for more info. The sort function has to return -1 for less than, 0 for the same as and 1 for greater than.

PHP Code:
``` monsterarray = []; function create_monster() {     var newmonster;     // Whatever code you have eg     monsterindex++;     attachMovie("monster", "monster"+monsterindex, monsterindex);     newmonster = this["monster"+monsterindex];     // Whatever code you have     // Whatever code you have     // Whatever code you have     // ...     monsterarray.push(newmonster); } function sort_monsters(a, b) {     var samesize = a._xscale == b._xscale;     var infront = a._xscale>b._xscale;     if (samesize) {         return 0;     } else {         // infront true returns -1+2 = 1         // infront false returns -1+0 = -1         return -1+2*infront;     } } function sortmonsterdepths() {     var monsterdepth = 50;     monsterarray.sort(sort_monsters);     for (var i = 0; i<monsterarray.length; i++) {         monsterarray[i].swapDepths(monsterdepth+i);     } }  ```

3. ## thank you !

Excllent, thanks for that Ill try and get my head round it and give it a go... Its a little bit Over my head but Ill go through it bit by bit.

Does that mean I should'nt use my normal for loop to duplicate the MC and put an OnclipEvent.EnterFrame code on the clip... but do it via attaching the clip instead ?

Many thanks
Dave Mattock

4. To stop the monsters screwing around with each other, the swapDepths is best done from one place. The way I set it out above means you only need to use a single onEnterFrame to check all monster depths.

PHP Code:
``` onEnterFrame = sortmonsterdepths;  ```

For CREATING the monsters, do it however you feel like. You could easily use a for loop as follows:
PHP Code:
``` for( var i=0;i<20;i++) { create_monster(); }  ```
BTW, ideally, you would delete the monster from the array when he gets squished. It will probably work without doing that, but it just leaves some loose ends.

5. Wicked.

Don't mind if I do.

Dave - I understand all of that, so if you need further assistance give us a shout.

Stu

6. ## WICKED

THANK YOU ALL !!
AlsoGaiusCoffey, thanks for the speedy responses
and Stu yeah Id love to run through this with ya. Ill call tommorrow and drop the CD up

7. So I didn't do much work today ...

And I can't draw for toffee ...

And this is probably nothing like what you are trying to do ...

And is probably not a lot of use to you ...

But it was fun playing around!

8. This is a bit more like something like a game.

9. ## Grrr. Bug.

The delete function was being silly when run in a browser: solution = make "i" into "var i".

10. I really must thank you for going to so much trouble... Im at intermediate level and half understood this, but some went way over my head.

But after a friend looking throught the code you uploaded aswell and going through it bit by bit , line by line..I am beginning to get there... Ive never used prototype before and love the way that if I want to add different and more baddies I can just add a repeat a few lines of the code... wicked

I could nt download the fla on a mac and had to use a PC for some reason ?

Once again thanks very much...
On another note Im have trouble temporarily stopping all the baddies timeline while the baddie that jumps out plays its death blood animation then starts all again

what is your background, Im adesigner learing code. I suppose you come from a programming background

THANKS AGAIN !!!!!!!!!!!!!

11. thank you for going to so much trouble
Glad to hear its of use. To be honest, I'd never had an opportunity to use the sort function before so I got involved with finding a way to test it and ended up getting carried away. Purely selfish motives on my part!

I suppose you come from a programming background
It must be my high-quality graphics that gave me away.
A bit of everything, but my first love would be relational database followed by (and soon to be overtaken by) object programming.

plays its death blood animation
I am getting scared. You will have to let me see the finished game.

Everything I can think of is a bit kludgey. The easiest to implement is probably this:
PHP Code:
``` Monster_MC.prototype.setup = function() {     this._x = (Math.random()*550);     this._y = (Math.random()*300);     this._xscale = this._yscale=MONSTERBABY;     this.growth = (Math.random(MONSTERGROWTH)+1);     this.gotoAndPlay("start");     this.onEnterFrame = this.advancing_monster; }; Monster_MC.prototype.advancing_monster = function() {     if (!paused) {         this.growme();     } };  ```
You need to then create a paused variable on the main timeline which an attacking monster sets.

12. Hi, and once again thanks !!

Ive put all that code which was in you fla example you uploaded and changed the Monster_MC name to bogey_mc just so I remember as I intend to have many monsters so used a descriptive name... anyway ... eventually all seems to work well.

The only problem I have is it doesent trace the baddies like it does in yours in the output window

Ive been going through it word by word as I dont just want to use the code but understand it fully, I read about using prototypes etc.
Its more complex the way you have done it but I can see its very clever and useful as I suppose I only need to dupliacte a few lines to add a completely different baddie in it!

Im going to try and randomise it a little so If I dupliacte 2 ninjas and 2 bogeys after a certain amount of time 1,2, or 3 more my appear, then onto a different level

Ill let you know when its finished... be a while yet ,have you got an email address ? then I can upload it and let you check it out

thanks again
dave@mattockgraphicdesign.com
check out http://www.mattockgraphicdesign.com if you get time, Youll see Im more of a designer than coder

#### Posting Permissions

• You may not post new threads
• You may not post replies
• You may not post attachments
• You may not edit your posts
•

 » Home » Movies » Tutorials » Submissions » Board » Links » Reviews » Feedback » Gallery » Fonts » The Lounge » Sound Loops » Sound FX » About FK » Sitemap