[mx] In need of a/s brilliance

[size=1]I had this post in the flash mx section but once it came down to studying the code I got no replies so i’ll post my question here now instead[/size]

My random movement works file when on _root but I have it loading on level18 now. I have changed the code accordingly (all _root to _level18) but it still leaves the boundary.

Here’s the code in the _level18 file


function getdistance(x, y, x1, y1) {
	var run, rise;
	run = x1-x;
	rise = y1-y;
	return (_level18.hyp(run, rise));
}
function hyp(a, b) {
	return (Math.sqrt(a*a+b*b));
}
MovieClip.prototype.reset = function() {
	// specify the width and height of the movie
	width = 685;
	height = 57;
	// -------------------
	var dist, norm;
	this.x = this._x;
	this.y = this._y;
	this.speed = Math.random()*4+2;
	this.targx = Math.random()*width;
	this.targy = Math.random()*height;
	dist = _level18.getdistance(this.x, this.y, this.targx, this.targy);
	norm = this.speed/dist;
	this.diffx = (this.targx-this.x)*norm;
	this.diffy = (this.targy-this.y)*norm;
};
MovieClip.prototype.move = function() {
	if (_level18.getdistance(this.x, this.y, this.targx, this.targy)>this.speed) {
		this.x += this.diffx;
		this.y += this.diffy;
	} else {
		this.x = this.targx;
		this.y = this.targy;
		if (!this.t) {
			this.t = getTimer();
		}
		if (getTimer()-this.t>1000) {
			this.reset();
			this.t = 0;
		}
	}
	this._x = this.x;
	this._y = this.y;
};

THANK-YOU for ANY help guys. This one is a total maze to me.

:love: ~ Seretha

p.s. Yea GuigO this is the same post, I tried to post my fla but it took a really long time and then when it finally finished it wasn’t even there!

I think it looks pretty cool as it is, and I’m not sure there’s an easy way to solve that (especially because all the clips don’t have the same size…).

pom :-\

It doesn’t leave the boundary?

Keep in mind the location is represented by the registration point of the clip, not the edge of the clip. So the registration point is definitely staying within the right area.

And as Ilyas said, considering the different sizes of your clips, there is no easy way of fixing that problem being the math will be different for each and every clip.

remove the _level18. from that piece of code:


return (_level18.hyp(run, rise));

it should look like that now


return (hyp(run, rise));

i tested, and it worked fer me :wink:

Cheers :bouce: