It bothered me so much, that I created a very simple tester of the problem. It has an actions layer and one layer with a thick red line drawn on it. It has a text box that reports which of the four frames you are on. It has a green button which goes to the next frame and a red button which goes to the previous frame.
On the first frame, I create an empty MovieClip with code, swap its depth with the stage MovieClip and draw a blue line on it. Everything looks great as you go from Frame 1 to 2 to 3 to 4, but go back from Frame 3 to Frame 2 or from Frame 4 to Frame 3 and the blue line disappears. If you trace the depth of the stage MovieClip, you see that Flash re-establishes it at its original depth when you navigate to the previous frame. Since your code-created MovieClip is at that depth, it gets wiped out. At least this is my current explanation.
Maybe you have a better theory and want to download the .fla to check it out. Regardless, I currently think that there is no good way to simulate a timeline layer with code.
The code is:
stop();
trace("library_mc starts at depth: "+this.library_mc.getDepth());
this.library_mc.lineStyle(3,0xFF0000,100);
this.library_mc.moveTo(50,100);
this.library_mc.lineTo(200,150);
if (counter == undefined) counter = 0;
counter++;
trace("creating code_mc for the time: "+counter);
this.createEmptyMovieClip("code_mc", this.getNextHighestDepth());
this.code_mc.swapDepths(this.library_mc);
this.code_mc.lineStyle(1,0x0000FF,80);
this.code_mc.moveTo(200,50);
this.code_mc.lineTo(50, 150);
green_btn.onRelease = function(){
this._parent.nextFrame();
}
red_btn.onRelease = function(){
this._parent.prevFrame();
}
frame_txt.text = "I am on frame 1";
this.onEnterFrame = function(){
frame_txt.text = "I am on frame " + _currentFrame;
trace("library_mc depth "+this.library_mc.getDepth());
}
No comments:
Post a Comment