Where did swapDepths ()
go in AS3?
This is what the ActionScript 2.0 Migration has to say about this:
ActionScript 2.0 | ActionScript 3.0 | Comments |
swapDepths() Method | Removed | In ActionScript 3.0, you can achieve similar functionality by using the methods of the DisplayObjectContainer class, such as the addChildAt(), setChildIndex(), swapChildren(), and swapChildrenAt() methods. |
Removed… bummer, so with what do I replace it with…
In AS2 you can use swapDepths()
in two ways:
- A Number that specifies the depth level where the movie clip is to be placed.
- An instance name that specifies the movie clip instance whose depth is swapped with the movie clip for which the method is being applied. Both movie clips must have the same parent movie clip.
In the examples there are two movieClips: ‘circle_mc
‘ and ‘square_mc
‘. Movieclip square_mc
is under circle_mc
(z-index is lower then circle_mc). And the task is to get square_mc
above circle_mc
.
AS 2
There are a couple of ways to do that in ActionScript 2:
Example #1
Swap the depth of two movieclips which each other (square_mc will be placed on the depth of circle_mc, and the other way around)
this.square_mc.swapDepths(this.circle_mc);
Example #2
I consider this a hack, but one that works
this.square_mc.swapDepths(1000000);
Example #3
When you want to change the depth of something, this is usually to place it on top:
this.square_mc.swapDepths(this.getNextHighestDepth());
AS 3
Lets try this in ActionScript 3:
Example #1
this.swapChildren(square_mc, circle_mc);
Visit livedocs at the Adobe site for more information and example code
[as]
var square = this.getChildByName (‘square_mc’);
var circle = this.getChildByName (‘circle_mc’);
trace(this.getChildAt(0).name); // square_mc
trace(this.getChildAt(1).name); // circle_mc
this.swapChildren(square as DisplayObject, circle as DisplayObject);
trace(this.getChildAt(0).name); // circle_mc
trace(this.getChildAt(1).name); // square_mc
[/as]
Example #2
not possible anymore… if you want a detailed explanation visit dreaming in Flash blog, and read more about swapDepths() in AS3 (it’s explained with a image)
Example #3
To place a movieclip on the highest depth in actionscript2, we will use MovieClip.getNextHighestDepth,
but in AS3 that function is removed 🙁
In AS3 you need to use numChildren
:
this.setChildIndex ( square_mc , this.numChildren - 1 );
Visit livedocs at the Adobe site for more information and example code
I realize that this is not a complete explanation… but I hope this is a starting point to find old function that you used in AS2
4 replies on “From AS2 to AS3 – Where did it go – swapDepths”
[…] public links >> as2 From AS2 to AS3 – Where did it go – swapDepths Saved by sebastiengregoire on Fri 24-10-2008 AS2: Removing MovieClips with Event Listeners Saved […]
THANK YOU SO MUCH!!! I have been trying to figure this out for the longest time now. Your explanation has been the MOST helpful to fix what I was trying to do.
Nice that I could help!
Thanks for the help man! Yeah lots of AS2 things were removed… Relearning it all in AS3 now 🙂