Flash - зацикливание временной шкалы, скрывающей каждый раз разные слои - PullRequest
0 голосов
/ 05 декабря 2011

Я новичок во Flash.Я создал базовую заставку, которая имеет 8 различных слоев.7 скрыты, и 1 играет, как сейчас.Мне было интересно, есть ли какой-нибудь способ, по завершении временной шкалы, он снова запускает временную шкалу, а затем показывает второй слой и маскирует первый.Затем он сделал бы то же самое, замаскировав 2-й слой и показывая 3-й и т. Д.

Возможно, я поступил совершенно неправильно, но любые указания будут оценены.

Спасибо!

1 Ответ

1 голос
/ 05 декабря 2011

Вы не можете скрыть / показать слои с помощью 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) для организации вашего кода. Но это тема для другого дня, и на данный момент, это решение, вероятно, будет хорошо.

Удачи!

...