Shakey shakey movieclips

I posted a thread and I’ve partly worked out how to do what I need but I still need a slight push in the right direction.

I’ve got two movieclips box and box2 and I’ve place them in the same layer because I couldn’t get each box to move individually in seperate ones I’ve placed this code on the frame

startx = box._x;
starty = box._y;
startx = box2._x;
starty = box2._y;
MovieClip.prototype.shakeYourBody = function(radius) {
forceX = 2*(Math.random()-.5)radius;
forceY = 2
(Math.random()-.5)radius;
this._x = startx+forceX;
this._y = starty+forceY;
};
this.onEnterFrame = function() {
// Find distance
var dx = _xmouse-box._x;
var dy = _ymouse-box._y;
var dx = _xmouse-box2._x;
var dy = _ymouse-box2._y;
var distance = dx
dx+dy*dy;
box.shakeYourBody(10000/(distance+1000));
box2.shakeYourBody(10000/(distance+1000));
};

Now I’ve got both movieclips shaking but they’re on top of each other rather than in the places I want them. I’m sure its a case of changing something but what?

have a go

Cheers!

postatomic

It’s the first four lines! You are assiging the value of box._x to startx and the box._y to starty and then you are assining them again but foer the other box!
Just make it
startx = box._x
starty = box._y
startx2 = box2._x
startx2 = box2._y

but there’s something strange going on there! hwo can you place that first code on a frame if there are lines which start with “this.”.
there shoud be scripts on both of the boxes… :-\

Nope, the problem is that you overwrite dx and dy.

this.onEnterFrame = function() {
  // Find distance
  var dx = _xmouse-box._x;
  var dy = _ymouse-box._y;
  var distance = dx*dx+dy*dy;
  box.shakeYourBody(10000/(distance+1000));

  var dx = _xmouse-box2._x;
  var dy = _ymouse-box2._y;
  var distance = dx*dx+dy*dy;
  box.shakeYourBody(10000/(distance+1000));
  box2.shakeYourBody(10000/(distance+1000));
};

Syko>> What’s wrong with this on a frame?

pom <:}

I’ve changed the script to this as ilyaslamasse posted but the two boxs are still on top of each other when I publish the movie…even thought they are on the other side of the screen to eachother.

startx = box._x;
starty = box._y;
startx = box2._x;
starty = box2._y;
MovieClip.prototype.shakeYourBody = function(radius) {
forceX = 2*(Math.random()-.5)radius;
forceY = 2
(Math.random()-.5)radius;
this._x = startx+forceX;
this._y = starty+forceY;
};
this.onEnterFrame = function() {
// Find distance
var dx = _xmouse-box._x;
var dy = _ymouse-box._y;
var distance = dx
dx+dydy;
box.shakeYourBody(10000/(distance+1000));
var dx = _xmouse-box2._x;
var dy = _ymouse-box2._y;
var distance = dx
dx+dy*dy;
box2.shakeYourBody(10000/(distance+1000));
};
:-\

True, I didn’t notice that you had overwritten startx and starty too. Gimme a second.

box.startx = box._x;
box.starty = box._y;
box2.startx = box2._x;
box2.starty = box2._y;
MovieClip.prototype.shakeYourBody = function(radius) {
	forceX = 2*(Math.random()-.5)*radius;
	forceY = 2*(Math.random()-.5)*radius;
	this._x = this.startx+forceX;
	this._y = this.starty+forceY;
};
this.onEnterFrame = function() {
	// Find distance
	var dx = _xmouse-box._x;
	var dy = _ymouse-box._y;
	var distance = dx*dx+dy*dy;
	box.shakeYourBody(10000/(distance+1000));
	var dx = _xmouse-box2._x;
	var dy = _ymouse-box2._y;
	var distance = dx*dx+dy*dy;
	box2.shakeYourBody(10000/(distance+1000));
};

I put startx and starty as a property of the boxes.

pom :slight_smile:

Syko>> What’s wrong with this on a frame?

nothing :slight_smile: I wasn’t thinking clearly… I was gonna delete that line but I forgot! :stuck_out_tongue:
hehe