Если заявление в AS3 не работает - PullRequest
1 голос
/ 26 ноября 2011

Это промежуточная отметка на рамке в корне. Я хочу зациклить Carrera (длинный видеоклип) из кадра 2 обратно в кадр 1. (В целях тестирования)

Это код:

if (MovieClip(root).Carrera.currentFrame==2){
   MovieClip(root).Carrera.gotoAndPlay(1);
}

MovieClip продолжает работать , игнорируя оператор if. Над чем я работаю?

Ответы [ 3 ]

2 голосов
/ 26 ноября 2011

Нет ошибки в операторе if, он просто не оценивается, когда вы ожидаете, что он будет.

Когда вы помещаете код во фрейм, он выполняется сразу же, , когда этот фрейм вводится . Итак, когда начинается первый кадр, выполняется if, состояние которого в это время ложно. И это никогда не будет выполнено заново, потому что вы никогда не говорите, что это так. В AS3 нет такого понятия, как "постоянные поручения"; -)

Вместо этого вы можете проверить каждый кадр, добавив прослушиватель событий:

addEventListener(Event.ENTER_FRAME, function (e) {
    if (MovieClip(root).Carrera.currentFrame==2){
        MovieClip(root).Carrera.gotoAndPlay(1);
    }
});

Или вы можете просто поместить gotoAndPlay(1); во второй кадр Carrera (не в корень).

2 голосов
/ 26 ноября 2011

Вы должны понимать, что вы выполняете это, если оператор только один раз . Даже если в этот момент клип Carrera находится в кадре 2, клип перейдет к воспроизведению 1 и продолжит воспроизведение - нет ничего, что могло бы заставить его повторить прыжок, и, таким образом, никогда не может быть петли.

Для того, чтобы это работало, вы должны снова и снова запускать один и тот же оператор - каждый раз, когда клип переходит на новый кадр.

Например, вы можете сделать это, а) прикрепив этот скрипт к кадру 2 клипа Carrera (не к корню!):

gotoAndPlay(1);

или б) добавление слушателя события к нему:

MovieClip(root).Carrera.addEventListener (Event.ENTER_FRAME, 
    function ( ev:Event ) : void {
        var cl:MovieClip = ev.target as MovieClip;
        if (cl.currentFrame == 2) cl.gotoAndPlay(1);
    }

Есть еще много способов сделать это, но если вы не собираетесь делать более сложные вещи, чем переходить к кадрам время от времени, я бы посоветовал вам перейти к первому варианту - кажется, вы должны узнать больше о ActionScript. перед испытанием слушателей событий.

0 голосов
/ 26 ноября 2011

Что нужно проверить ...

Определен ли MoveClip (root) в точке выполнения?

Определен ли MoveClip (root) .Carrera в точке выполнения?

MovieClip (root) .Carrera играет (или вы называли остановку на нем, чтобы он просто сидел в кадре 1?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...