[Okta Webinar] Learn how to a build a cloud-first strategyRegister Now

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 334
  • Last Modified:

Snap to Movie Clips

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
skibama1
Asked:
skibama1
  • 2
  • 2
1 Solution
 
CalronCommented:
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
 
skibama1Author Commented:
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
 
CalronCommented:
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
 
skibama1Author Commented:
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

instead of:

var1 = instance._x

Thanks for your help!!
0

Featured Post

Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

  • 2
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now