Recipe 7.12 Getting a Movie Clip s Boundaries

Recipe 7.12 Getting a Movie Clip's Boundaries

7.12.1 Problem

You want to know the minimum and maximum x and y coordinates that determine the edges of a movie clip (its bounding box).

7.12.2 Solution

Use the getBounds( ) method.

7.12.3 Discussion

You can determine the left, right, top, and bottom coordinates of a movie clip within its parent movie clip using a combination of the _x, _y, _width, and _height properties:

left   = myMovieClip._x; right  = left + myMovieClip._width; top    = myMovieClip._y; bottom = top + myMovieClip._height;

While this technique works, it is rather intensive and inefficient when compared to the getBounds( ) method. The getBounds( ) method returns an object with four properties:

xMin

The leftmost x coordinate of the movie clip

xMax

The rightmost x coordinate of the movie clip

yMin

The topmost y coordinate of the movie clip

yMax

The bottommost y coordinate of the movie clip

The four properties define the bounding box of the visible content within the movie clip. (Note that y coordinates increase as you move down the screen, which is the opposite of the Cartesian coordinate system.) When you call getBounds( ) without parameters, it returns an object with values relative to the movie clip's coordinate system. You can also pass the method a reference to a target coordinate system (another movie clip) for which you want the returned object's values to be given:

// Include DrawingMethods.as from Chapter 4 for its drawCircle(  ) method. #include "DrawingMethods.as" // Create a new movie clip and draw a circle in it. _root.createEmptyMovieClip("circle_mc", 1); circle_mc.lineStyle(1, 0x000000, 100); circle_mc.drawCircle(100); // Move the circle to (200,200) within _root. circle_mc._x = 200; circle_mc._y = 200; // Get the bounds of the circle within circle_mc as well as relative to the _root // coordinate space. insideBounds = circle_mc.getBounds(  ); parentBounds = circle_mc.getBounds(_root); // Loop through the bounds objects and list the values. trace("inside bounds:"); for (var val in insideBounds) {   trace(val + ": " + insideBounds[val]); } trace("parent bounds:"); for (var val in parentBounds) {   trace(val + ": " + parentBounds[val]); } /* Output window shows: inside bounds: yMax: 101 yMin: -101 xMax: 101 xMin: -101 parent bounds: yMax: 301 yMin: 99 xMax: 301 xMin: 99 */

7.12.4 See Also

Recipe 7.17



ActionScript Cookbook
ActionScript 3.0 Cookbook: Solutions for Flash Platform and Flex Application Developers
ISBN: 0596526954
EAN: 2147483647
Year: 2005
Pages: 425

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net