[Last Call] Learn about multicloud storage options and how to improve your company's cloud strategy. Register Now

x
Solved

# Snap to Movie Clips

Posted on 2003-11-04
Medium Priority
333 Views
I have a movie that has 10 movie clip objects.  Each object has a different letter.  The objective here is that a student can click on a button, here a word and then try to spell the word by dragging the letters to boxes.  What I would like to happen is for the letters to snap to the center of the box once the letter is released on top of that box.

Right now once the release happens the letters just lay where they are dropped.

Example:

http://planetallison.com/ee/snapto/dls3.swf

0
Question by:skibama1
[X]
###### Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

• Help others & share knowledge
• Earn cash & points
• 2
• 2

LVL 5

Expert Comment

ID: 9684986
what you can do is add some positioning code when you stop the dragging:

somewhere in your code you have:

mc.stopDrag();

// calculate corrected position (snap to a grid)
mc._x = correctedX
mc._y = correctedY

Now to calculate the corrected position I'll give you a simple example that snaps to a 100x100 pixel grid

var correctedX = int(mc._x / 100) * 100;
var correctedY = int(mc._y / 100) * 100;

What this does is the following:  lets say my _x is 145.   145 / 100 = 1.45;  int(1.45) = 1; 1 * 100 = 100;
This of course can be refined a lot. In your case you will probably have to first check if the letter was released in the top part where you have the spaces to insert letters. If not, I would return the letter to its starting position at the bottom. The same for letters dropped somewhere outside of the top part.
In the top part define your grid where you want to  snap your letters to and do the calculations.
0

LVL 1

Author Comment

ID: 9693093
OK, how do I go about changing the _X and _Y properties of the object?  I was assuming it would be:

setProperty("instance", _X, "xvalue");

but I nothing happens on the release
0

LVL 5

Accepted Solution

Calron earned 500 total points
ID: 9693575
Give your movieclips an instancename. This name can be set in the properties window. then using that name you can access them like this:

myMC._x = 123;  // assuming you set myMC as instance name, give each movieclip a new name

depending on where you are trying to access the movieclip you micht have to write:

_root.myMC._x = 123;  // this is if you movieclip lies on the main timeline.

If you can't get this to work, post your fla and I'll write this straight into your fla.
0

LVL 1

Author Comment

ID: 9696932
The _root solved the problem.  I also had to go back and set the _x & _y variables to calculate it based on the root.

That is:

var1 = _root.instance._x

var1 = instance._x

0

## Featured Post

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

In my long career of working as an actionscript developer, I had spent sleepless night often working hard to solve some small problems which actually took a lot of my development time; later found out the solutions to be a line or two. Here are s…
The last time I worked with Flash and Socket connections was in AS1. A recent project required flash connecting to a Socket, and sending receiving information - we figured it would be easy enough - we all know about the socket policy documents and c…
The goal of the tutorial is to teach the user how to live broadcast using Flash Media Live Encoder and connecting it to YouTube to broadcast. Log into your Youtube account, choose live stream settings, start live stream from Flash Media Live Enc…
The goal of the tutorial is to teach the user how to select the video input device. Make sure you have an input device that in connected and work and recognized by Adobe Flash Media Live Encoder and select it in the “video input” menu.
###### Suggested Courses
Course of the Month12 days, 23 hours left to enroll