The Code
We first create an empty movieclip and put the following code inside a keyframe:
#initclip
MovieClip.prototype.PathCorrector = new MovieClip();
function PathCorrector(){
tMclip = _root[this.tHolder];
this.onEnterFrame=function(){
if(tMclip._url == undefined){
this._parent._root = this._root;
} else {
this._parent._root = tMclip;
}
}
}
Object.registerClass("PathCorrector", PathCorrector);
#endinitclip
The code is very simple. We give this movieclip a new class function called checkPath. To make sure that the path is checked all the time we add an onEnterFrame function. Then we ask whether a path is defined, which has _root.movieHolder._url in it. If the movie is alone or a level1 movie, this path does not exist and then the parent root is its own root. Otherwise the parent root is different and starts with the level of the parent movie (0) over the empty movieclip (movieHolder), which is now the root for the child movie. And this is all what it is about.
Important: When you use the pathcorrector component, all objects directly on the stage should not have _root in front. It is not necessary in any case to do that. Unfortunately, there is a habbit to do it, which has been also enforced by Macromedia and is in my opinion not correct, because objects on the stage are automatically located at the root. If you do that when you use the component, the component won´t work. Test it out by yourself with one of the objects, which I made invisible. Now to complete the lesson have a look at the rest of the code in child movie 1 and 2.
Code Movie 1
stop();
//Dynamic Textfield text
if(_root.movieHolder._url==undefined){
textField.text="Status alone: this "+this;
}else{
textField.text="Status uploaded: this "+this;
}
//functions for buttons, the function for the oval button is a normal on(Release) function.
MovieClip.prototype.pressMe4 = function(){
this.onPress=function(){
_root.mc4._rotation+=10;
}
}
MovieClip.prototype.pressMe5 = function(){
this.onPress=function(){
_root.mc7._rotation+=10;
}
}
//execution of the functions
mc1.mc2.mc3.pressMe4();
mc1.mc3b.pressMe5();
mc3c.pressMe4();
mc6.mc7.pressMe5();
//notice here that mc5 and mc8 are not referenced with _root
mc5._visible=false;
//we give empty movieclip same name movieHolder as to load movie 1
mc8.movieHolder.loadMovie("movie2.swf");
Code Movie 2
Movie 2 has the function for a button with the name button_m2 and inside the function we refer to mc4 in movie 1 with _root. The rest is done by the pathcorrector, which is also present in this movie.
mo2.button_m2.onPress=function(){
_root.mc4._rotation+=30;
}
Conclusion
Please test the component in your movies. Give me feedback if it works and more important in which movies it does not work. Before you do that make sure you follow all the directions of this tutorial and name the empty movieclips correctly.
DISCLAIMER: The producer of the pathcorrector component, Joachim Schnier, shall not be held liable for any damage caused by the use of the component.
|