A Flash Developer Resource Site

# Thread: [F8] MC snapping to a x Coord.

1. ## [F8] MC snapping to a x Coord.

Hi all, I've got a problem with a movie I'm working on.. basically there's a mc that is a rating guide, let's say -10 to +10. I'm trying to get it so that an mc inside the main mc snaps to a _x value, depending on where the user releases the mouse. Here's an example of code that I have.

code:
this.onPress = function() {
awrRate.startDrag(true, -143, 0, 143, 0)
}

awrRate.onRelease = onReleaseOutside = function() {
stopDrag();
if((awrRate._x - awrRate._width/2) <= -136.1 || (awrRate._x - awrRate._width/2) >= -120.5) {
setProperty(awrRate, _x, -128.5);
}
}
etc.

help!

2. Hi,

code:

awrRate.onRelease = function() {

//First of all, we divide by 143 then multiply by 10;
var x = ( this._x + (this._width/2) ) / 143 * 10;
//This gives us a number in the range -10 to 10. Now we
//round to the nearest integer;
x = Math.round(x);
//To finish, we reverse what did the first time to get
//our number back in the range -143 to 143, except that
//since we have rounded we only get certain values;
x = x / 10 * 143;

//We don't use the setProperty function anymore... it's deprecated;
this._x = x - this._width / 2;
}

awrRate.onReleaseOutside = awrRate.onRelease;

I'm not sure whether you want to add or subtract the width - this will depend on the registration point of your clip (to save yourself hassle, change the reg. point to the center, and then you don't have to mess with the width at all).

The script will now automatically set your snap points at even intervals between -143 and 143.

To see how this might work, imagine that the user releases the clip at _x = -127. We then divide by 143 and multiply by 10 to get x = -8.88... . We then round to the nearest number, so now x = 9. We then reverse the operation, so we do x * 143 / 10 to get x = -128.7.

The problem with syntax is that you forgot to put awrRate.onReleaseOutside. Generally, it's also good practice to only put one '=' sign on any given line, so

code:

a = b = 1;

is considered bad practice (in some circles). Also, you should have used the 'this' keyword, rather than the name of the movieclip.

Hope this helps.

#### 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