остановка на последнем кадре (вспышка) - PullRequest
6 голосов
/ 20 января 2010

Я хочу, чтобы мой видеоклип воспроизводился один раз и останавливался на последнем кадре.Я использую следующий код в цикле моего класса movieclip.(это as3)

if(currentFrame == 120)
stop();

120 - последний кадр.Это играет один раз.но проблема в том, что он снова возвращается к кадру 1.Есть ли лучший способ остановки мувиклипа на конкретном кадре.

Ответы [ 7 ]

12 голосов
/ 21 января 2010

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

mc.addFrameScript(mc.totalFrames - 1, function():void 
{
    mc.stop();
});

Не могу вспомнить область действия функции, но вы можете использовать mc.stop () или просто остановить ().

* РЕДАКТИРОВАТЬ - Добавлено -1 к первому параметру addFrameScript, потому что он основан на нуле (поэтому, чтобы поместить frameScript в рамку 10 , вы бы поставили 9 ).

3 голосов
/ 07 сентября 2011

Самый простой способ:

  1. Просто выберите последний кадр на временной шкале.Откройте панель действий (F8).Убедитесь, что выбранный кадр по-прежнему выбран, если нет, то выберите снова, пока открыта панель «Действия».
  2. После выбора просто добавьте функцию простой остановки () на панели «Рамка действия»..

    //add the following line to the actions pane of the last frame.
    stop();
    
  3. Все готово.При необходимости вы можете добавить кнопку воспроизведения.

3 голосов
/ 20 января 2010

На временной шкале вы можете просто поставить ключевой кадр в конце и добавить туда метод stop();.Когда он достигнет этого кадра, будет запущен метод stop();, и клип остановится.

Предполагается, что вы используете временную шкалу, но звучит так, как вы.

1 голос
/ 25 января 2010

потому что объект вызывался дважды.

0 голосов
/ 21 января 2010

Я понял это. Честно говоря, я думаю, что мое приложение имеет недостатки. Это сработало чудесным образом, и я ничего не делал. В моем цикле я сделал if (currentframe == totalframes), и то, что не произошло раньше, теперь происходит идеально. Я не знаю почему. Но, как я уже сказал, это может быть программная проблема, потому что у меня иногда возникают проблемы с передачей значений через конструкторы. И нужно создавать специальные методы для принятия этих значений.

0 голосов
/ 21 января 2010

возни с этим, я знаю, что проблема не имеет ничего общего с тем, что flash не отвечает на мою функцию stop ()Я полагаю, что это может иметь какое-то отношение к тому, что flash дважды вызывает мувиклип.Один поверх другого.Сделать так, чтобы все началось снова.Я не уверен.Если я вызываю мувиклип где-нибудь еще, он работает.просто не в моей петле.Я сделал трассировку, и трассировка обнаружилась только один раз, что показывает, что она инициировала ее один раз.

0 голосов
/ 20 января 2010

Это похоже на то, что вы ищете:

addEventListener(Event.ENTER_FRAME, function(e:Event){
    if(currentFrame == totalFrames){
      stop();
      removeEventListener(event.type, arguments.callee);
    }
});

Я добавил прослушиватель событий (для Actionscript 3), чтобы в каждом кадре эта функция запускалась и проверяла, какой это кадрна.Если это последний кадр, он остановится.Исходя из вашего примера, я предполагаю, что у вас есть класс, расширяющий MovieClip.

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