我是Flash的新手。我创建了一个基本的屏幕保护程序,它有8个不同的层。 7隐藏,1现在播放。我想知道是否有任何方式在完成时间线时,它再次启动时间线,然后显示第二层并掩盖第一层。然后它将执行相同的操作,屏蔽第二层并显示第三层,依此类推。
我可能完全以错误的方式解决了这个问题,但任何指导都会受到赞赏。
谢谢!
答案 0 :(得分:1)
您无法使用actionscript隐藏/显示图层,但您可以打开和关闭可见性。
您的每个图层都可能是自己的MovieClip(如果不是,请尝试将每个图层设置为自己的MovieClip)。给每个实例名称(screen1,screen2等)。然后,您将需要创建一个捕获时间轴的事件处理程序,并允许您在发生时执行某些代码。可能需要使自己的帧计数器变量。此代码将在时间轴的第一帧(通常在其自己的层中)中进行。像这样:
var frameCounter:int = -1; //start at -1 so the first screen gets shown first
var currentScreen:MovieClip = screen1; //or whatever the name of the first screen is
var screens:Array = [screen1, screen2, screen3, screen4, screen5]; //load your screens into an array so it's easier to cycle through them
//make sure all of the screens are hidden to begin with
for each(var screen:MovieClip in screens) {
screen.visible = false;
}
this.stage.addEventListener(Event.ENTER_FRAME, handleEnterFrame);
function handleEnterFrame(evt:Event):void {
frameCounter++;
if(frameCounter == this.totalFrames) {
frameCounter = 0; //just to be sure this value resets properly
}
if(frameCounter == 0) {
var indexOfCurrentScreen = screens.indexOf(currentScreen);
var indexOfNextScreen = indexOfCurrentScreen + 1;
if(indexOfNextScreen >= screens.length) {
indexOfNextScreen = 0; //to make sure we're not out of the array bounds
}
//hide the last screen, show the next one
currentScreen.visible = false;
currentScreen = screens[indexOfNextScreen] as MovieClip;
currentScreen.visible = true;
}
}
希望这足以让你有一个良好的开端。请记住,此代码应位于主时间轴第一帧的自己的关键帧中。通常,最好将该关键帧放在自己的层中,并将其称为“操作”。
说实话,通常认为最佳做法是不在时间轴中使用任何代码,而是使用.as(actionscript)文件来组织代码。但这是另一天的主题,而现在,这个解决方案可能会做得很好。
祝你好运!