January 02, 2004
MovieClip._location property
It has been said that necessity is the mother of invention. It has been argued that annoyance, not necessity, fuels invention.
I'd like to start the year off with a little script brought to life by annoyance. To set the position of a MovieClip, you need two lines of code: one to set the _x position, and another to set the _y position. Many times I found myself wishing for a way to set a MovieClip's coordinates in one line. Enter the "_location" property. Use the code below to add the _location property to all of your MovieClips.
// pt is an object with an x and a y property function $setLocation(pt) { this._x = pt.x; this._y = pt.y; } function $getLocation() { return {x:this._x, y:this._y}; } MovieClip.prototype.addProperty("_location", $getLocation, $setLocation); // constants for ASSetPropFlags var HIDDEN:Number = 1; var PROTECT_DELETE:Number = 2; var PROTECT_OVERWRITE:Number = 4; ASSetPropFlags(MovieClip.prototype,"_location", HIDDEN | PROTECT_DELETE | PROTECT_OVERWRITE, 0);
Usage is simple - you can just write..
my_mc._location = {x:20, y:40};
.. and the MovieClip will adjust it's x and y positions.
Happy New Year Everyone!

Comments
I have to say, I'm a pretty big fan of the new V2 components' "move" method, which takes two parameters (eg: mc.move(x,y); ). But retrieval of properties is still two lines.
How about using an array of size two, [x,y] ? That should save you some keystrokes ;)
I know, I know, everyone's a critic. Happy New Year.
Posted by: Wes Carr at January 2, 2004 02:24 PM
Kudos Darron !!!
Great work !!!
-Pandu
P.S. But this time, you are the father of the invention in regards to this context. :) (Just kidding)
Posted by: Pandu at January 6, 2004 02:28 AM
lol
my_mc._y = 40;
my_mc._x = 20;
is actually 3 characters less than
my_mc._location = {x:20, y:40};
:-)
Posted by: Peter Hall at January 16, 2004 09:34 PM
Actually Peter, the _location property is really useful with a Point2D class that I didn't share.
my_mc._location = new Point2D(20,40);
And we can even shorten that to _loc to save some typing. It should be about as readable since loc is a common abbreviation.
The Point2D class I'm using is basically just a port of the Java Point2D class: http://java.sun.com/j2se/1.3/docs/api/java/awt/geom/Point2D.html
Since I was using Java before I was introduced to Flash, I recreated some Java classes that I found useful.. and by making the _location property I'm easily able to use a Point as the coords for a clip.
Posted by: darron at January 16, 2004 10:27 PM